1. 程式人生 > >極其簡單的遞歸——騎士與金幣

極其簡單的遞歸——騎士與金幣

clu ins closed 得到 view splay ace 又是 ios

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; }
View Code

極其簡單的遞歸——騎士與金幣