1596: PIPI数兔(PIPIPOJ)
题目描述
一对刚出生的小兔一个月后就能长大成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,假设兔子不会死亡。
PIPI有一对刚出生的兔子,n个月后繁殖成多少对兔子?
输入
多组输入。每组样例输入一个正整数n(1<=n<=50),表示月数。
输出
对于每组样例输出一个正整数,表示最终兔子的数量。
样例输入
2
3
50
样例输出
2
3
20365011074
提示信息
使用long long类型,防止溢出int类型的最大值
题解1(C++版本)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
LL f[55]={0,1,2}; // 使用long long 类型
void init(){
for(int i = 3; i <= 50; i++){
f[i] = f[i - 2] + f[i - 1]; // 自己推出前5项,总结出规律
}
}
int main(){
init(); // 预处理出前50项,提高效率
while(~scanf("%d", &n)){
printf("%lld\n", f[n]);
}
return 0;
}