k = int(input())
total = 0
current_group = 1
paid_in_group = 0
for _ in range(k):
if current_group == paid_in_group:
current_group += 1
paid_in_group = 0
total += current_group
paid_in_group += 1
print(total)
根据当天获得几个金币进行分组,可以得出:组、每天的金币数、天数都是相同的数字,用 current_group 表示。
第 1 组:1 金币/天 * 1 天
第 2 组:2 金币/天 * 2 天
第 3 组:......
total 表示最终获得的金币数,current_group 表示当前所在组,paid_in_group 表示当前组内已支付的天数。
for _ in range(k) 执行 k 次,即每天执行一次
if current_group == paid_in_group: 如果第 n 组已经支付了 n 天
current_group += 1 切换至下一组
paid_in_group = 0 进入下一组前将已支付天数归零
total += current_group 如果第 n 组支付不足 n 天,增加相应金币数
paid_in_group += 1 当前组已支付天数 +1

京公网安备 11010502036488号