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"); }