zzuli OJ 1055: 兔子繁殖問題
阿新 • • 發佈:2019-01-02
題目描述
這是一個有趣的古典數學問題,著名義大利數學家Fibonacci曾提出一個問題:有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第一個月有一對剛出生的小兔子,問第n個月有多少對兔子?
輸入
輸入月數n(1<=n<=44)。
輸出
輸出第n個月有多少對兔子。
樣例輸入
3
樣例輸出
2
提示
本題是一個經典的遞推入門題目:
用f(n)表示第n個月的兔子數目,則:
f(n) = f(n-1) + 本月新生兔子數
而,本月新生兔子數 = f(n-2) (因為上上個月已存在的每隻兔子,本月都會新生一隻兔子)
所以,f(n) = f(n-1) + f(n-2)
這就是著名的fabinacci數列,後一項等於前兩項的和: 1 1 2 3 5 8…
#include<stdio.h> int main() { int f1=1,f2=1,f3; int i,n; scanf("%d",&n); if (n==1||n==2) printf("1"); for(i=3;i<=n;i++) { f3=f1+f2; f1=f2; f2=f3; } printf("%d",f3); return 0; }