UVA 12459 - Bees' ancestors 題目: Maya 是一隻愛幫助朋友的蜜蜂。Maya 的好朋友 Willy 是一隻雄蜂。他剛發現他沒有爸爸,他覺得很困擾。 Maya 知道雌蜂有雙親 (一個爸爸和一個媽媽),但是雄蜂則只有一個媽媽而沒有爸爸。這是因為未交配的雌蜂所產的卵會孵出雄蜂,但是受精的卵則會孵出雌蜂。 在 Maya 曉以大義之後,Willy 開始好奇他有多少祖先。他有一個媽媽,兩個祖父母 (一個祖父和一個祖母)。他也有三個曾祖父母。因為 Willy 很懶,不想做太多計算,他要請你寫個程式來幫他計算某一代的祖先一共有幾個。假設同一代的祖先之間沒有親戚關係。 Input 你的程式會收到一連串的正整數,一個一行,各自代表一個世代。世代的最大值為 80。輸入以 0 結束。 Output 對於每筆測資,你的程式要印出 Willy 在那個世代有幾個祖先。 Sample Input #1 1 2 3 0 Sample Output #1 1 2 3 C++ code: **用遞迴可能會TLE** ```c++= #include <bits/stdc++.h> using namespace std; unsigned long f(unsigned int num) { if (num == 1) return 1; if (num == 2) return 2; unsigned long fib[num + 1]; fib[1] = 1; fib[2] = 2; for (int i = 3; i <= num; ++i) { fib[i] = fib[i - 1] + fib[i - 2]; } return fib[num]; } int main() { int a; while(cin >> a) { if (a == 0) { break; } else { cout << f(a) << endl; } } return 0; } ```