1  | 
  | 
这是之前的代码不知道为什么提交老是不对,然后去讨论区看了一下,发现了错误,数组存大数时候,要考虑到0,如果是55500522每个数位存一个两位数的话,就会输出5550522,那个0被省略了;这次我改成这样了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
int a[100][100];  
void t(int i,int n)  
{  
    a[i][1]=n;  
}  
int main()  
{  
    //freopen("d:\\data\\1.txt","r",stdin);  
    int i,j,len,t1,t2,t3,temp,jw;  
    while(scanf("%d%d%d",&t1,&t2,&t3)!=EOF)  
    {  
        if(t1==0 && t2==0 && t3==0)  
            printf("0");  
        else  
        {  
            memset(a,0,sizeof(a));  
            t(0,t1);  
            t(1,t2);  
            t(2,t3);//将数转化为数组存储  
            len=1;  
            for(i=3;i<=99;i++)  
            {  
                jw=0;  
                for(j=1;j<=len;j++)    
                {  
                    temp=a[i-1][j]+a[i-2][j]+a[i-3][j]+jw;  
                    a[i][j]=temp%base;  
                    jw=temp/base;  
                    if(j==len && jw!=0)  
                        len++;  
                }  
            }  
        //  printf("[[[%d  %d  %d",a[0][0],a[0][]);  
            //while(a[99][len]==0)  
                //len--;  
            i=len;  
            printf("%d",a[99][i--]);  
            for(;i>=1;i--)  
                printf("%08d",a[99][i]);  
        }  
        printf("\n");  
    }  
    return 0;  
  
}  
然后ac了,时间0,内存300+。