[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;
}
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号