6 条题解

  • 1
    @ 2025-6-28 9:22:24

    用递归做是最简单的

    #include <bits/stdc++.h>
    using namespace std;
    int dg(int n)
    {
        if(n==1||n==2)
        {
            return 1;//如果是1/2,直接return1
        }
        else
        {
            return dg(n-1)+dg(n-2);//否则继续递归
        }
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);cout.tie(0);
        int n,m;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>m;
            cout<<dg(m)<<'\n';
        }
        return 0;
    }
    
    • 1
      @ 2023-10-12 18:52:22
      #include<iostream>
      using namespace std;
      int a(int n){
      	int a1=1,a2=1,a3;
          for(int i=0;i<n-2;i++){
          a3=a1+a2;
          a1=a2;
          a2=a3;}
          return a3;
      }
      int main(){
          int m;
          cin>>m;
          int n;
          for(int i=0;i<m;i++){
              cin>>n;
              if(n==1||n==2){
              	cout<<"1"<<endl;
      		}
              else{
      		n=a(n);
              cout<<n<<endl;}
          }
      }
      
      • 1
        @ 2023-9-24 14:09:41

        #include<stdio.h> int main() {int m,n,i,s1,s2; scanf("%d",&m); while(m--) {scanf("%d",&n); for(i=3,s1=s2=1; i<=n;i++) {s1=s1+s2; s2=s1-s2; } printf("%d\n",s1); } return 0; }

        • 0
          @ 2025-9-27 13:17:22
          #include<stdio.h>
           int main() 
           {int m,n,i,s1,s2; 
          scanf("%d",&m);//代表测试用例的数量
           while(m--)//当m小于等于零时停止循环
            {scanf("%d",&n); //输入用例
            for(i=3,s1=s2=1; i<=n;i++) //n小于三时直接输出s1=1
            {s1=s1+s2; s2=s1-s2; }//当n大于等于3时开始循环不断为s1,s2赋值
             printf("%d\n",s1); }//输出最后两项s1s2相加的结果s1
           return 0; }//得解
          
          • 0
            @ 2025-8-20 15:45:36

            来个矩阵快速幂(虽然通常是需要取模的时候再用😋o(logn))

            #include <bits/stdc++.h>
            using namespace std;
            #define ll long long
            typedef vector<vector<ll>> mat;
            
            mat operator*(const mat &a, const mat &b) {
                mat c(2, vector<ll>(2));
                for (int i = 0; i < 2; ++i) {
                    for (int j = 0; j < 2; ++j) {
                        for (int k = 0; k < 2; ++k) {
                            c[i][j] += a[i][k] * b[k][j];
                        }
                    }
                }
                return c;
            }
            
            
            mat operator^(mat a, ll b) {
                mat res = {{1, 0}, {0, 1}};
                while (b) {
                    if (b & 1) res = res * a;
                    a = a * a;
                    b >>= 1;
                }
                return res;
            }
            
            
            
            void solve() {
                ll n;
                cin >> n;
                if (n == 1) {
                    cout << 1 << '\n';
                    return;
                }
                mat trans = {{1, 1}, {1, 0}};
                mat power = trans ^ (n - 2);
                mat init = {{1, 0}, {1, 0}};
                mat res = power * init;
                cout << res[0][0] << '\n';
            }
            
            
            
            int main() {
                int t;
                cin >> t;
                while (t--) {
                    solve();
                }
                return 0;
            }
            
            • 0
              @ 2023-9-16 23:39:15
              #include<stdio.h>
              int main()
              {
                  int m;
                  scanf("%d",&m);
                  int a[25]={0};
                  a[1]=1;
                  a[2]=1;
                  int n;    
                  for(int i=3;i<25;i++){
                          a[i]=a[i-1]+a[i-2];
                  }
                  for(int j=1;j<=m;j++){
                      scanf("%d",&n);
                      printf("%d\n",a[n]);
                  }
                  return 0;
              }
              
              • 1

              信息

              ID
              123
              时间
              3000ms
              内存
              128MiB
              难度
              4
              标签
              (无)
              递交数
              1228
              已通过
              536
              上传者