2 条题解

  • 1
    @ 2023-11-25 10:44:52
    using namespace std;
    #define MAX 9999
    int f[1001][MAX];
    int len;
    void fun(int x){
    	for(int i=0;i<len;i++){
    		f[x][i]+=f[x-1][i]+f[x-2][i];
    		if(f[x][i]>9){
    			f[x][i+1]++;
    			f[x][i]-=10;
    		}
    		if(i==len-1&&f[x][len])len++;
    	}
    }
    int main(){
    	int m,n;
    	cin>>m>>n;
    	f[1][0]=1;
    	f[2][0]=1;
    	len=1;
    	int x=n-m+1;
    	for(int i=3;i<=x;i++){
    		fun(i);
    	}
    	while(f[x][len-1]==0&&len>1){
    		len--;
    	}
    	for(int i=len-1;i>=0;i--){
    		cout<<f[x][i];
    	}
    	return 0;
    }
    

    好懂,让题目直接坐下

    • 0
      @ 2023-8-18 1:10:08
      #include<bits/stdc++.h>
      using namespace std;
      int m,n;
      string a,b,c,d;
      string add(string sa,string sb){
          int lena=sa.size();
          int lenb=sb.size();
          int a[1005]={0},b[1005]={0},c[1005]={0};
          int lenc=lena>lenb?lena:lenb;
          for(int i=0;i<lena;i++) a[lena-i-1]=sa[i]-'0';
          for(int i=0;i<lenb;i++) b[lenb-i-1]=sb[i]-'0';
      
          for(int i=0;i<lenc;i++){
              c[i]+=a[i]+b[i];
              if(c[i]>=10){
                  c[i+1]=c[i]/10;
                  c[i]%=10;
              }
              // cout<<c[i];
          }
          if(c[lenc]>0)lenc++;
          string sc;
          for(int i=lenc-1;i>=0;i--) sc+=c[i]+'0';
          // cout<<sc;
          return sc;
      }
      int main(){
          cin>>m>>n;
          // a="0";
          // b="1";
          // c="2";
          string a[1005]={"0","1","1"};
              for(int i=3;i<=n-m+1;i++){
                  a[i]=add(a[i-1],a[i-2]);
                  // cout<<a[i];
              }
      
          cout<<a[n-m+1];
          return 0;
      }
      
      • 1

      信息

      ID
      1385
      时间
      1000ms
      内存
      125MiB
      难度
      2
      标签
      递交数
      11
      已通过
      4
      上传者