问题标题: 酷町堂:7916 小明走地毯

0
0
已解决
刘意阳
刘意阳
初级天翼
初级天翼

题目链接: 酷町堂:7916

#include <iostream>
#include <cstring>
#define MAXN 1000+5
#define M 1000000+5
using namespace std;
char x[MAXN];
int s,m,n,sum,a[M],b[M],c[M];
string f[MAXN]={"0","1","1"};
string add(string x,string y){
    int jw=0;
    string s="";
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=x.size();
    b[0]=y.size();
    c[0]=max(a[0],b[0]);
    for(int i=1;i<=a[0];i++){
        a[i]=x[a[0]-i]-'0';
    }
    for(int i=1;i<=b[0];i++){
        b[i]=y[b[0]-i]-'0';
    }
    for(int i=1;i<=c[0];i++){
        c[i]=a[i]+b[i]+jw;
        jw=c[i]/10;
        c[i]%=10;
    }
    if(jw!=0){
        c[++c[0]]=jw;
    }
    for(int i=c[0];i>=1;i--){
        s+=char(c[i]+'0');
    }
    return s;
}
string jf(string x,string y){
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=c[0]=x.size();
    b[0]=y.size();
    for(int i=1;i<=a[0];i++){
        a[i]=x[a[0]-i]-'0';
    }
    for(int i=1;i<=b[0];i++){
        b[i]=y[b[0]-i]-'0';
    }
    for(int i=1;i<=c[0];i++){
        if(a[i]>=b[i]){
            c[i]=a[i]-b[i];
        }else{
            c[i]=a[i]+10-b[i];
            a[i+1]--;
        }
    }
    while(c[c[0]]==0&&c[0]!=1){
        c[0]--;
    }
    string s="";
    for(int i=c[0];i>=1;i--){
        s+=(char)(c[i]+'0');
    }
    return s;
} 
int main(){
    cin>>m>>n;
    for(int i=3;i<=n;i++){
        f[i]=add(f[i-1],f[i-2]);
    }
    cout<<jf(f[n],f[m-1]);
    return 0;
}

哪位大佬帮我看一下为什么WA0    (๑•̀ㅂ•́)و✧


0
已采纳
张程阳
张程阳
新手天翼
新手天翼

f[1]="1";

f[2]="2";

n-=m;'

是核心

0
0
0
张程阳
张程阳
新手天翼
新手天翼

如果m<3会爆

所以要设边界

n还要-=m

我要回答