6 条题解

  • 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
          @ 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;
          }
          
          • 0
            @ 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;}
                }
            }
            
            • 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
              标签
              (无)
              递交数
              1080
              已通过
              470
              上传者