【题目描述】
在非洲有一种非常特殊的蜜蜂。每年,这种蜜蜂的一只雌蜂生育一只 雄蜂,而一只雄蜂生育一只雌蜂和一只雄蜂,生育后它们都会死去!现在科学家们意外地发现了这一特殊物种的一只神奇的雌蜂,她是不死的,而且仍然可以每年像其他雌蜂一样生育一次。科学家想知道在N年后会有多少蜜蜂。请写一个程序,帮助他们计算 N 年后雄蜂的数量和所有的蜜蜂总数。
【输入】
每个输入行包含一个整数 N(≥0),输入以 N=-1 终结(程序不必对 N=-1 进行处理。
【输出】Bee
输出的每行有两个数字,第一个数字是 N 年后雄蜂的数量,第二个数字是 N 年后蜜蜂的总数(这两个数字不会超过 2^31)。
蒟蒻绑不上UVA的号,所以提交不上,但在校内oj的数据还是过了的,一道比较细节的题,注意题目范围两个数字不会超过 2^31,所以我们可以打表,O(1)回答,规律自己在纸上推下就出来了,开long long保险点。
代码
#include<bits/stdc++.h>
using namespace std;
long long n,ans[100][3];
int main(){
scanf("%lld",&n);
ans[0][1]=0;//ans[n][1]为第n年后雄蜂的数量
ans[0][2]=1;//ans[n][2]为第n年后蜜蜂的总数
for(int i=1;i<=50;++i){//范围自己跑下看,貌似到40几就够了,50保险点
ans[i][1]=ans[i-1][2];
ans[i][2]=ans[i-1][1]+ans[i][1]+1;
}
while(n!=-1){
printf("%lld %lld
",ans[n][1],ans[n][2]);
scanf("%lld",&n);
}
return 0;
}