NOIP普及組2015 T1金幣
阿新 • • 發佈:2018-05-20
play 階段 for pac getchar 一場 生涯 cnblogs char
我對模擬的理解: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 usingView Codenamespace 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金幣