刚刚学的高精度,用c写的,不知为何不能实现进位,求助大佬

P1255 数楼梯

jsna @ 2021-03-07 17:12:11


#include<stdio.h>
int main()
{
    int j,a[105]={0},b[105]={0},n,i,c[105]={0};
    scanf("%d",&n);
    a[0]=b[0]=c[0]=1;
    if(n<=2)
    {
        printf("1");
        return 0;
    }

    for(i=3;i<=n;i++)
    {
        for(j=0;j<100;j++)  
        {
            a[j]=b[j];
            b[j]=0;
        }
        for(j=0;j<100;j++)  
        {
                b[j]=c[j];
        }
        for(j=0;j<100;j++)
        {
            c[j]=a[j]+b[j];
            if(c[j]>=10)
            {
                c[j+1]=c[j+1]+c[j]/10;
                c[j]=c[j]%10;
            }
        }

    }
    for(i=100;i>=0&&c[i]==0;i--)
    ;
    for(j=i;j>=0;j--)
    printf("%d",c[j]);

}

by jsna @ 2021-03-07 17:13:55

orz求助大佬


by 书雪 @ 2021-03-07 17:31:19

我比较弱,调了半天才调出来,你的c[j]=a[j]+b[j]把你进的位刷掉了

@jsna


by 书雪 @ 2021-03-07 17:35:13

你的输出部分直接把我这个蒟蒻看懵了qwq


by jsna @ 2021-03-07 20:03:41

@snow019 我还是不太懂诶,可以讲下怎么调的吗


by jsna @ 2021-03-07 20:04:07

@snow019 我才是蒟蒻,哭了哭了


by 书雪 @ 2021-03-07 20:16:29

比如说a数组存了5,b数组存了8,c数组会先进一个3,第二位进一个1,然后你去加第二位时0+0又把第二位变成了0

@jsna


by 书雪 @ 2021-03-07 20:19:59

这个很好改的qwq


by jsna @ 2021-03-08 11:10:34

@snow019 我懂了,谢了


by 我是超级垃圾 @ 2021-03-25 21:56:40

N=5K的时候答案有一千多位,数组不够大吧


|