http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=396#problem/B
这道题完全套用大整数乘法的模板即可
#include<stdio.h>
#include<string.h>
int main(){
    char a1[300],a2[300];
    unsigned b1[300],b2[300],res[70010];
    while(scanf("%s%s",a1,a2)!=EOF){
        memset(b1,0,sizeof(b1));
        memset(b2,0,sizeof(b2));
        memset(res,0,sizeof(res));
        int i,j,len1=strlen(a1);
        j=0;
        for(i=len1-1;i>=0;i--)
            b1[j++]=a1[i]-'0';
        int len2=strlen(a2);
        j=0;
        for(i=len2-1;i>=0;i--)
            b2[j++]=a2[i]-'0';
        for(i=0;i<len2;i++)
            for(j=0;j<len1;j++)
                res[i+j]+=b2[i]*b1[j];
        for(i=0;i<70000;i++)
            if(res[i]>=10){
                res[i+1]+=res[i]/10;
                res[i]%=10;
            }
        int flag=0;
        for(i=70000;i>=0;i--)
            if(flag)
                printf("%d",res[i]);
            else if(res[i]){
                printf("%d",res[i]);
                flag=1;
            }
        if(flag==0)
            printf("0");
        putchar('\n');
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation