题解 P2669 【金币】

· · 题解

看到大佬们的题解感觉自愧不如

我的思路很简单,直接模拟

#include <iostream> 
//反对万能头!
using namespace std;
int n,q,c,s;
//n是有多少天
//s是获得的金币总量
//c是每天能获得的金币数
//q表示往后数q天,获得的金币都是c个
int main()
{
    cin>>n;
    c=q=1;  //第一天(往后的一天),获得1个金币
    for(int i=1;i<=n;i++)   //要发n天金币
    {
        s+=c;   //累加
        q--;    //已经发了一天
        if(q==0)    //要更新数据
        {
            c++;    //每天获得金币的数量+1
            q=c;    //根据题意,以后的c天都是c个金币,q就是c
        }
    }
    cout<<s;    //输出
    return 0;   //THE END
}

当然还有一种更优秀的做法,那就是打表(如果你有坚强的毅力)

求过。。