2 条题解

  • 1
    @ 2025-6-7 20:23:10
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>  // 添加这行
    using namespace std;
    
    vector<string> dp(6001);
    
    string addStrings(string num1, string num2) {
        string res;
        int i = num1.size()-1, j = num2.size()-1;
        int carry = 0;
        while(i >= 0 || j >= 0 || carry) {
            int n1 = i >= 0 ? num1[i--]-'0' : 0;
            int n2 = j >= 0 ? num2[j--]-'0' : 0;
            int sum = n1 + n2 + carry;
            res.push_back(sum%10 + '0');
            carry = sum/10;
        }
        reverse(res.begin(), res.end());
        return res;
    }
    
    void precompute() {
        dp[0] = "1";
        dp[1] = "1";
        for(int i = 2; i <= 6000; i++) {
            dp[i] = addStrings(dp[i-1], dp[i-2]);
        }
    }
    
    int main() {
        precompute();
        int n;
        cin >> n;
        cout << dp[n] << endl;
        return 0;
    }
    
    
    • 0
      @ 2023-5-19 21:14:04

      (缺失一部分)

      int main(){
      	IOS;
      	cin>>n;
          if(n<3){
         //特殊判断
      	}
      	a[1]=1,b[1]=2;
      	for(int i=3;i<=n;i++){
      		for(int j=1;j<=len;j++)c[j]=a[j]+b[j];
      		for(int j=1;j<=len;j++){
      			if(c[j]>9){
      				//处理进位
      				if(j+1>len)len++;
      			}
      		}
      		for(int j=1;j<=len;j++)a[j]=b[j],b[j]=c[j];
      	}
      	for(int i=len;i>=1;i--)//输出部分
      	return 0;
      }
      
      • 1

      信息

      ID
      1227
      时间
      1000ms
      内存
      128MiB
      难度
      9
      标签
      递交数
      224
      已通过
      22
      上传者