金币(NOIP2015)
程序员文章站
2024-03-18 21:32:58
...
先给题目:金币
又是很水的题,很简单,直接上代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int add=1; //1
int ans=0;
while(n>0){
if(n>=add){ //2
n-=add; //3
ans+=add*add;
}else{
ans+=add*n;
n-=add; //4
}
add++; //5
}
printf("%d",ans);
return 0;
}
有5点值得讲一下:
1处:add用来计算当前每天给多少金币。
2、3处:提一下这里n是剩余天数,add金币要发add天,这里若n够add,则发add天。如果不够,则发n天。
4处:这里仍然要减,是为了结束循环。因为循环条件是n>0,减了后,变成负数,就可以退出循环。
5处:当前发金币数加一。