欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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