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