题解 P2669 【金币】

这道题题目并不难,简单模拟即可:

  1. 根据题意的“骑士会在之后的连续N+1天里,每天收到N+1枚金币”我们可以定义一个变量day_sum代表在连续的day_sum天收到的每天收到的金币。

  2. 定义一个day来记录天数,一旦day==n立即输出。

  3. 定义ans来累加金币数

下面给出ac代码:read等价于cin,是我自己写的快速读入,out等价于cout,同理。用兴趣的同学可以了解一下其实对新手用处不大

#include<cstdio>
#include<cctype>
int n,day,ans,day_sum=1;
inline int read(int &x){
    x=0;bool sign=false;char ch;
    while(!isdigit(ch)){sign|=(ch=='-');ch=getchar();}
    while(isdigit(ch))  {x=x*10+(ch^48);ch=getchar();}
    return sign?-x:x;
}
inline void out(int x){
    if(x<0)putchar('-'),x=-x;
    if(x>9)out(x/10);
    putchar(x%10+'0');
}
int main(){
    read(n);
    while(1){//用来循环的,终止条件在for循环里
        for(int i=1;i<=day_sum;i++){
            ans+=day_sum;//根据1可得
            day++;每次天数都要加上去
            if(day==n){//如果天数已经到了就直接输出
                out(ans);
                return 0;//直接结束程序,简单粗暴,无视多重循环~~
             }
        }
        day_sum++;//每操作完一次就++
    }
    return 0;
}
posted @ 2018-11-03 11:26  加固文明幻景  阅读(5)  评论(0编辑  收藏  举报  来源