大家帮忙看下,为什么用高精度不会输出?

P1255 数楼梯

B2214shengmin @ 2022-06-28 22:03:19

#include<bits/stdc++.h>
using namespace std;
int int1[1010],c[1010],len_;
char str1[1010];
/*int fbnqsl(int x){
    if(x==1)return 1;
    else if(x==2)return 2;
    else return fbnqsl(x-1)+fbnqsl(x-2);
}*/
void init(char a[],int *b){
    int l=strlen(a);
    for(int i=0;i<l;i++){
        b[i]=a[l-i-1]-'0'; 
    }
}
void sum_hp(char a[],char k){//a+b 顺加输出 
    init(a,int1);//把a字符串传入init,转化成int1数组 
    memset(c,0,sizeof(c));//c数组清零
    int i,l=strlen(a);//l为a字符串的长度
    for(i=0;i<l;i++){//a+k 
        c[i]+=int1[i]+k;
        if(c[i]>9){//判断是否要进位 
            c[i]-=10;//把个位留下来 
            c[i+1]++;//进位 
        }
    }
    if(c[i]>0){
        len_=l;
    }else{//从l-1位输出 
        len_=l-1;
    }
}
int main() {
    int q=3;
    cin>>str1;
    memset(int1,0,sizeof(int1));
    if(str1=="1"){
        cout<<1;
        return 0;
    }else if(str1=="2"){
        cout<<2;
        return 0;
    }
    for(int i=3;i<=q;i++){
        sum_hp(str1,q);
        q++;
        //cout<<endl;
    }
    for(int i=len_;i>=0;i++)cout<<c[i]; 
    return 0;
} 

by ICE_Dice1024 @ 2022-06-28 22:20:24

你设置的 q 的初始值为 3

4446 行的代码导致 i\leqslant q 恒成立,因此进入了死循环


by ICE_Dice1024 @ 2022-06-28 22:25:23

你的代码太复杂了,需整理一下


|