3 solutions

  • -3
    @ 2024-10-7 11:47:04
    #include<iostream>
    using namespace std;
    int main()
    {
        int n;
        cin >> n;
        int h=0;//记录前一个i
        int l = 1 , i, sum = 0;
        for(i=1;i<=n;i+=l)//这个过程请读者带数运行以下就理解了
        {
            sum+=l*(i-h);//总的金币相加
            l++;//下一次给的金币数
            h=i;//记录前一个i,(i-h)就可以得到发工资都相同得天数
        }
        if(i!=n)//如果不相等就说明sum小于真实值,就是不满足下一个同样工资得天数!=(i-h)个;
        {
            sum+=(n-h)*l;//将剩余得加起来;
        }
        cout<<sum;
    }
    
    

    Information

    ID
    886
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    148
    Accepted
    53
    Uploaded By