題目描述 Description
國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之后兩天(第二天和第三天),每天收到兩枚金幣;之后三天(第四、五、六天),每天收到三枚金幣;之后四天(第七、八、九、十天),每天收到四枚金幣……;這種工資發放模式會一直這樣延續下去:當連續N天每天收到N枚金幣后,騎士會在之后的連續N+1天里,每天收到N+1枚金幣。
請計算在前K天里,騎士一共獲得了多少金幣。
請計算在前K天里,騎士一共獲得了多少金幣。
輸入輸出格式 Input/output
輸入格式:
輸入文件只有1行,包含一個正整數K,表示發放金幣的天數。
輸出格式:
輸出文件只有1行,包含一個正整數,即騎士收到的金幣數。
輸入文件只有1行,包含一個正整數K,表示發放金幣的天數。
輸出格式:
輸出文件只有1行,包含一個正整數,即騎士收到的金幣數。
輸入輸出樣例 Sample input/output
樣例測試點#1
輸入樣例:
6
輸出樣例:
14
樣例測試點#2
輸入樣例:
1000
輸出樣例:
29820
說明 description
【輸入輸出樣例 1 說明】
騎士第一天收到一枚金幣;第二天和第三天,每天收到兩枚金幣;第四、五、六天,
每天收到三枚金幣。因此一共收到 1+2+2+3+3+3=14 枚金幣。
騎士第一天收到一枚金幣;第二天和第三天,每天收到兩枚金幣;第四、五、六天,
每天收到三枚金幣。因此一共收到 1+2+2+3+3+3=14 枚金幣。
對於 100%的數據, 1 ≤ K ≤ 10,000。
思路:入門難度,純粹模擬即可。。
代碼如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 //freopen("coin.in","r",stdin); 6 //freopen("coin.out","w",stdout); 7 int k=1,x=1,i=1,flag=0,j=1; 8 int n; 9 int num=0;//答案 10 scanf("%d",&n); 11 while(1)//一直循環下去,直到 12 { 13 for(j=1;j<=k;j++)//連給k天 14 { 15 num=num+k;//加上今天獲得的錢 16 i++;//總天數增加 17 if(i>n) 18 { 19 x=0; 20 flag=1;//跳出循環 21 break; 22 } 23 } 24 if(flag)//如果 25 break; 26 k++;//連給天數增加 27 } 28 printf("%d\n",num); 29 return 0; 30 }
