题解 P2669 【金币】
这道题题目并不难,简单模拟即可:
-
根据题意的“骑士会在之后的连续N+1天里,每天收到N+1枚金币”我们可以定义一个变量day_sum代表在连续的day_sum天收到的每天收到的金币。
-
定义一个day来记录天数,一旦day==n立即输出。
-
定义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;
}