2000:金幣
- 總時間限制:?
- 1000ms 內存限制:?
- 65536kB
- 描述
-
國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之后兩天(第二天和第三天)里,每天收到兩枚金幣;之后三天(第四、五、六天)里,每天收到三枚金幣;之后四天(第七、八、九、十天)里,每天收到四枚金幣……這種工資發放模式會一直這樣延續下去:當連續N天每天收到N枚金幣后,騎士會在之后的連續N+1天里,每天收到N+1枚金幣(N為任意正整數)。
你需要編寫一個程序,確定從第一天開始的給定天數內,騎士一共獲得了多少金幣。
輸入 - 輸入包含至少一行,但不多于21行。除最后一行外,輸入的每行是一組輸入數據,包含一個整數(范圍1到10000),表示天數。輸入的最后一行為0,表示輸入結束。 輸出
- 對每個數據輸出一行,包含該數據對應天數和總金幣數,用單個空格隔開。 樣例輸入
-
10 6 7 11 15 16 100 10000 1000 21 22 0
樣例輸出 -
10 30 6 14 7 18 11 35 15 55 16 61 100 945 10000 942820 1000 29820 21 91 22 98
#include<iostream>using namespace std; int getCoins( int i ,int day ){ //我們知道,i既是他應該得到的coin又是天數 if ( day <= i ) return day * i;else return i * i + getCoins ( i + 1, day - i); } int main(){int days;while (cin >> days && days != 0){cout << days << " " << getCoins( 1 , days ) << endl;}return 0; }
?