首页 > 试题广场 >

养兔子

[编程题]养兔子
  • 热度指数:11600 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。

输入描述:
测试数据包括多组,每组一行,为整数n(1≤n≤90)。


输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)。
示例1

输入

1<br/>2

输出

1<br/>2
import java.util.*;
public class Main{
    public static long[] arr = new long[91];
    
    public static void fun(){
        arr[0] = 1;
        arr[1] = 1;
        arr[2] = 0;
        for(int i = 2;i < arr.length;i++){
            arr[i] = arr[i - 1] +arr[ i - 2];
        }
    }
   // public static void main(String[] args){
   //     Scanner sc = new Scanner(System.in);
   //     while(sc.hasNext()){
   //         int n = sc.nextInt();
    //        fun();
    //        System.out.println(arr[n]);
   //     }
  //  }
    
    
    
    //方法二:
    
     public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            long f0 = 1;
            long f1 = 1;
            long f2 = 1;
            for(int i = 2;i <= n;i++){
                f2 = f1 +f0;
                f0 = f1;
                f1 = f2;
            }
            System.out.println(f2);
        }
    }
}

编辑于 2022-05-18 16:02:58 回复(0)
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()) {
            System.out.println(fibonacciLoop(sc.nextInt() + 1));
        }
    }
    // 循环实现
     private static long fibonacciLoop(int n) {
        long k1 = 1, k2 = 1;
        if(n == 1 ) {
            return 1;
        }
        for(int i = 2; i <= n; i++) {
            long temp = k1 + k2;
                k1 = k2;
                k2 = temp;
        }
        return k1;
    }
}
发表于 2018-07-17 13:49:59 回复(0)
//由题意可知数列为:1 2 3 5 8 13 .。。
//即知该数列为斐波那契数列(从第1项开始的斐波那契)
//解决思路:利用特性:f(n)=f(n-1)+f(n-2);
//即可用迭代法的方法算出第n个斐波那契值,这里为了防止溢出,类型用long
//若long还是溢出,此时应换种思路去解(备注:用java的BigInteger虽然可以得出答案,可消耗了一定的时间复杂度,不建议选)
//思路2:用数组存储斐波那契数列值,用二维数组存储每一行代表第N个数,每一列为f斐波那契值的前几位(采用取模即可)

import java.util.Scanner;

public class Main{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 //       int n = sc.nextInt();
        while(sc.hasNext()){
            int t = sc.nextInt();
            long sum = 1;
            if(t == 1){
                System.out.println(sum); 
            }else{
                long a = 1;
                long b = 1;
                for(int i=2;i<=t;i++){
                    sum  = a + b;
                    a = b;
                    b = sum;
                }
                System.out.println(sum);
            }

        }
    }


}

编辑于 2018-03-11 21:15:02 回复(0)
兔子是哺乳动物,领一只兔子,生个毛线啊
发表于 2018-01-25 16:31:21 回复(4)
//就是斐波那契数列
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            
            long[] arr = new long[91];
            arr[1] = 1;
            arr[2] = 2;
            for(int i = 3;i < arr.length;i++){
                arr[i] = arr[i-1] + arr[i-2]; 
            }
            System.out.println(arr[n]);
        }
    }
}

发表于 2017-10-05 22:08:21 回复(1)