[2015年NOIP普及组] 金币

题目大意是:一个骑士从第一天开始,往后的K天内每天会收到k枚金币,求第n天,骑士收到了多少金币。

这个题可以用while循环来写,里面嵌套着for循环:

while(a<k)
{
for(int i=1;i<=n;++i)
{
m+=n;
a++;
}
if(a<k)
n++;
}

但最后会发现输出的比实际要多,那是因为循环中多循环了(a-k)遍,所以我们要把多出来的减去。

代码如下:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int k,m=0,n=1,a=0;
cin>>k;
while(a<k)
{
for(int i=1;i<=n;++i)
{
m+=n;
a++;
}
if(a<k)
n++;
}
m=m-(a-k)*n;
cout<<m;
return 0;
}