回 帖 发 新 帖 刷新版面

主题:OJ题--养兔子

Description
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 
某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。
Input
测试数据包括多组,每组一行,为整数n(1≤n≤90)。 
输入以0结束。
Output
对应输出第n天有几只兔子(假设没有兔子死亡现象)。
[color=FF0000]Sample Input[/color]
Original Transformed 

1
2
0
1[EOL] 2[EOL] 0[EOL] [EOF] 

Sample Output
Original Transformed 

1
2


以下是我的解答,提交时总提示wrong answer,不知道错在哪?求帮忙啊!







[code=c]
#include<stdio.h>
int main()
{
    int n;
    
    long long  f1,f2,m;

    int i=0;

    for(;;)
    {
        scanf("%d",&n);

        if(n==0) break;

        f1=1;
        f2=1;
        
        for(i=1;i<n;i++)
        {
            m=f1;
            f1=f1+f2;
            f2=m;
        }
        printf("%lld\n",f1);
    }
    return 0;
}[/code]

详细题目请点击:
[url=http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=164]http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=164[/url]

回复列表 (共4个回复)

沙发

后面没有break语句吧!如果n不为0,则printf语句后面要跳出循环

板凳

我感觉这题不是那样考的,
 对应第n天有几只兔子 An = 2 ** n.
因此只要计算 2的n次方就可以了。

而题目给出的 n<=90,故不能直接用unsigned int 或int来表示An。32位机的unsigned或int类型最多能表示一个32位的数,90位可能要用数组等结构来表示。

3 楼

一只兔子能生小兔子吗?
这种不是来源于生活的题目做起来有意思吗?

4 楼

[quote]后面没有break语句吧!如果n不为0,则printf语句后面要跳出循环[/quote]
后面不用break吧,因为要多组数据进行计算的,题面说了,以0结尾,那有n=0的一个break就行了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册