top1编程
← 返回题目
题解

【基础】骑士的金币

1 条题解

  • 0
    @ 2026-7-29 0:15:28
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        long long total = 0;  // 总金币数
        int days = 0;         // 已经过了多少天
        int k = 1;            // 当前阶段每天拿 k 枚金币
    
        while (days + k <= n) {
            total += k * k;     // 连续 k 天,每天 k 枚 → 共 k² 枚
            days += k;
            k++;
        }
    
        // 剩余不足 k 天
        if (days < n) {
            total += (n - days) * k;  // 剩下的天数,每天拿 k 枚
        }
    
        cout << total << endl;
    
        return 0;
    }
    
    • 1