NOIP普及组2015 T1金币
Posted akmer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NOIP普及组2015 T1金币相关的知识,希望对你有一定的参考价值。
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html
题目链接:https://www.luogu.org/problemnew/show/P2669
这是我OI生涯中第一场比赛的第一道题目,而且这题在2015的普及组之前我就做过了(当时教练说NOIP会从NOI题库里选原题就狂刷了一通emmm)。只需根据它的题意模拟按阶段发金币,然后特判最后一个阶段是否会全部发完就可以了,水的不能再水。代码如下:
1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 5 int n,sum; 6 7 int read() { 8 int x=0,f=1;char ch=getchar(); 9 for(;ch<‘0‘||ch>‘9‘;ch=getchar())if(ch==‘-‘)f=-1; 10 for(;ch>=‘0‘&&ch<=‘9‘;ch=getchar())x=(x<<1)+(x<<3)+ch-‘0‘; 11 return x*f; 12 }//快读。虽然这已经暴露了我省选选手的身份,但是我还是要写这篇博客>_< 13 14 int main() { 15 n=read(); 16 int k=1;//n为天数,k为阶段,第k阶段持续k天,每天发k枚金币。 17 while(n) {//当还有发金币的天数还有剩余 18 if(n>=k) { 19 sum+=k*k; 20 n-=k;//第k阶段会完全过完 21 } 22 else { 23 sum+=n*k; 24 n=0;//第k阶段只过了一部分,n天就过完了。为了退出循环,特地把n扣成0,虽然按照现实生活天数也只能用自然数来衡量…… 25 } 26 k++;//进入下一阶段 27 } 28 printf("%d\\n",sum); 29 return 0; 30 }
以上是关于NOIP普及组2015 T1金币的主要内容,如果未能解决你的问题,请参考以下文章