题解 UVA11000 【Bee】

传送门

【题目描述】

在非洲有一种非常特殊的蜜蜂。每年,这种蜜蜂的一只雌蜂生育一只 雄蜂,而一只雄蜂生育一只雌蜂和一只雄蜂,生育后它们都会死去!现在科学家们意外地发现了这一特殊物种的一只神奇的雌蜂,她是不死的,而且仍然可以每年像其他雌蜂一样生育一次。科学家想知道在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\n",ans[n][1],ans[n][2]);
        scanf("%lld",&n);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/donkey2603089141/p/11414654.html
Bee
今日推荐