ZZULIOJ 1055:兔子繁殖问题
生活随笔
收集整理的這篇文章主要介紹了
ZZULIOJ 1055:兔子繁殖问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
兔子繁殖問題
題目描述
這是一個(gè)有趣的古典數(shù)學(xué)問題,著名意大利數(shù)學(xué)家Fibonacci曾提出一個(gè)問題:有一對(duì)小兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長到第3個(gè)月后每個(gè)月又生一對(duì)兔子。按此規(guī)律,假設(shè)沒有兔子死亡,第一個(gè)月有一對(duì)剛出生的小兔子,問第n個(gè)月有多少對(duì)兔子?
輸入
輸入月數(shù)n(1<=n<=44)。
輸出
輸出第n個(gè)月有多少對(duì)兔子。
樣例輸入 Copy
3
樣例輸出 Copy
2
提示
本題是一個(gè)經(jīng)典的遞推入門題目: 用f(n)表示第n個(gè)月的兔子數(shù)目,則: f(n) = f(n-1) + 本月新生兔子數(shù) 而,本月新生兔子數(shù) = f(n-2) (因?yàn)樯仙蟼€(gè)月已存在的每只兔子,本月都會(huì)新生一只兔子) 所以,f(n) = f(n-1) + f(n-2) 這就是著名的fabinacci數(shù)列,后一項(xiàng)等于前兩項(xiàng)的和: 1 1 2 3 5 8…
#include<stdio.h> int main() {int x,y,z,i,n;scanf("%d",&n);x=y=1;if(n>=1&&n<3)//前兩個(gè)月兔子為一只 {printf("%d\n",x);//直接輸出第一 二個(gè)月的兔子 }if(n>=3)//從第三個(gè)月開始 {for(i=3;i<=n;i++){z=x+y;//前兩項(xiàng)相加等于后一項(xiàng) 1 1 2 3 5 8y=x;//把第一項(xiàng)賦值給下一項(xiàng) 1 1 2 3 5 8x=z;//把累加的值保持在原項(xiàng) 1 1 2 3 5 8}printf("%d\n",z);}return 0; }
總結(jié)
以上是生活随笔為你收集整理的ZZULIOJ 1055:兔子繁殖问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产生10个1-100的随机数,并放到一个
- 下一篇: 求给定精度的简单交错序列部分和(c语言)