b079: F. 鬧鐘

網址 http://zerojudge.tw/ShowProblem?problemid=b079

內容 :

名雪是一個很愛賴床的女孩,一般的鬧鐘對她根本沒用,所以每天早上媽媽都要花很大的力氣叫她起床上學。

這天在放學的路上,她看到有一家店的鬧鐘在大特價,想趁打折期間多買一些回家裡用,讓媽媽以後不用那麼辛苦。

在精過精密的計算之後,她發現n個鬧鐘的音量並不是一個的n倍,是一個很奇特的數學關係:

假設An表示n個鬧鐘的音量,則有

雖然20個鬧鐘對名雪來說就夠用了,她還是很好奇更多鬧鐘的的時候音量會有多大,想請你寫個程式幫忙算。

輸入說明 :

輸入檔中有許多組測試資料。每組測試資料是一個正整數n(1<=n<=1000000),表示鬧鐘的數量。讀到n = 0表示檔案結束,不須處理這組輸入。

輸出說明 :

對每組測試資料輸出n個鬧鐘的音量總和。

範例輸入 :

1 2 3 5 10 0

範例輸出 :

1 1 2 3 6

提示 :

出處 :

2007 NPSC 國中組初賽

參考程式碼

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

#include <iostream>using namespace std; int a[1000001]; int main() { int m; a[0]=1; a[1]=1; a[2]=1; for(int i=3;i<=1000000;i++){ a[i]=0; if ((i-a[i-1]) < ________ ){ a[i]+=1; }else { a[i]+=a[i-a[i-1]]; } if ((i-1-a[i-2]) < ________ ){ ________ }else { ________ } } while (cin >> m){ if (m==0) break; cout << a[m] << endl; } //system("pause"); }