[2015年NOIP普及组] 金币

6. [2015年NOIP普及组] 金币

l  分析:根据题意,设i作为每次的累加值,day是通过i统计的天数,且可发现规律为金币数量是i值的平方。而有种情况是在day还没有到指定的k值,且day加上下一个i值就超过指定k,此时金币数会因此超出,只需要用day-k算出超出了几天,乘当时的i就可,而当前的i是新的已经加上1的i,所以要i-1,最后求得准确金币数。

l   

#include<iostream>

#include<cstdio>

using namespace std;

int main()

{

       int k,money=0,day=0,i=1;

       cin>>k;

       while(day<k)

       {

              day+=i;//day每次都加i

              money+=i*i;//金币数是原数加i平方

              i++;//i每次加1

       }

       money-=(day-k)*(i-1);//这种情况是day超出要求的天数 减去多加的金币数

       cout<<money;

       return 0;

}

posted @ 2022-08-12 09:34  4lovls  阅读(79)  评论(0)    收藏  举报