6 条题解

  • 6
    @ 2023-8-3 21:06:16

    已AC,放心食用

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	long long a[51]={1,1}; //定义一个大于50的数组,必须用long long,否则储存不开
    	int i,n;
    	for(i=0;i<51;i++)if(i>=2)a[i]=a[i-1]+a[i-2];//遍历这50个月内的兔子数,储存在数组中
        cin>>n;
        cout<<a[n-1];//调出第n项,即数组的n-1项
    	return 0;
    }
    
    • 3
      @ 2022-11-13 11:31:26

      一看到题目“兔子的总数”我立刻想起了斐波那切数列(又称称为兔子数列)......

      long fib[50] = {1 , 1} , n;
      cin >> n;
      for(int i = 2 ; i < n ; i++)
      {
          fib[i] = fib[i - 1] + fib[i - 2];
      }
      
      • 3
        @ 2022-8-29 17:55:13

        规律

        • 第一个月兔兔对数:1
        • 第二个月兔兔对数:1(成熟的兔兔)
        • 第三个月兔兔对数:1(成熟的兔兔)+1(新生的兔兔崽崽)
        • 第四个月兔兔对数:2(成熟的兔兔)+1(新生的兔兔崽崽)
        • 第五个月兔兔对数:3(成熟的兔兔)+2(新生的兔兔崽崽)
        • 第六个月兔兔对数:5(成熟的兔兔)+3(新生的兔兔崽崽)

        ……


        **总结🎉️ **

        第n个月新生的兔兔崽崽对数=第n-1个月成熟的兔兔

        第n个月成熟的兔兔对数=第n-1个月成熟的兔兔+新生的兔兔崽崽


        规律有了,递推走起🎉️

        设第n个月的兔子为f(n),第n个月成熟的兔子为g(n),第n个月新生的兔兔崽崽为x(n)

        那么f(n)=g(n)+x(n)=f(n-1)+f(n-2)


        上代码!!!🎉️

        cin >> n;
        f1 = f2 = 1;
        for(long long i = 3;i <= n;i++){
                f3 = f2 + f1;
                f1 = f2;
                f2 = f3;
        }
        cout << f2;
        

        题解不易,点个赞呗👍

        • 2
          @ 2023-8-23 2:09:00
          #include<bits/stdc++.h>
          using namespace std;
          long fib[114514];
          int main()
          {
              int n;
              cin>>n;
              fib[1]=1;
              fib[2]=1;
              fib[3]=2;
              for(int i=3;i<=n;i++)
              {
                  fib[i]=fib[i-1]+fib[i-2];
              }
              cout<<fib[n];
          }
          
          • 2
            @ 2023-8-13 21:43:37

            前几行是推导 用函数自身调用即可AC image

            • 0
              @ 2022-11-27 15:49:26
              #include <stdio.h>
              using namespace std;
              int main()
              {
                  int f1 = 1;                       //f1为前一个月的兔子数
                  int f2 = 1;                       //f2为前两个月的兔子数
                  int n = 0;                        //n为这个月的兔子数
                  int i = 0;
                  printf("%12d%12d", f1, f2);      //输出第1.2月的兔子数
                  for (i = 3; i <= 20; i++)
                  {
                      n = f1 + f2; 
                      printf("%12d", n); 
                      if (i % 4 == 0)
                      {
                          printf("\n"); 
                      }
                      f2 = f1; 
                      f1 = n; 
                  }
                  printf("\n");
                  return 0;
              }
              
              • 1

              [入门]统计每个月兔子的总数

              信息

              ID
              238
              时间
              1000ms
              内存
              256MiB
              难度
              6
              标签
              递交数
              543
              已通过
              159
              上传者