Skip to content

金币

原题链接

思路

  • 模拟。
    • 根据题意,设置变量 cntday 分别代表当天能收到的金币数和收到 cnt 金币的天数。
    • 循环枚举第 i 天,每次循环:
      • 若当天 cnt == day,说明金币需要增加(cnt++),且要重置 day = 0
      • 总共收到的金币 sum += cnt
      • 收到 cnt 的天数 day++
    • 最后 sum 即为答案。

代码

cpp
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

void solve() {
    LL n;
    cin >> n;
    LL sum = 0, cnt = 0, day = 0;
    for (int i = 1; i <= n; i++) {
        if (cnt == day) {
            cnt++;
            day = 0;
        }
        sum += cnt;
        day++;
    }
    cout << sum << endl;
}

int main() {
    solve();
    return 0;
}