金币(NOIP2015)

先给题目:金币
又是很水的题,很简单,直接上代码:

#include
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处:当前发金币数加一。

你可能感兴趣的:(NOIP题解,NOIP详细(良心)题解)