uva10106

来源:互联网 发布:mac os x启动盘 编辑:程序博客网 时间:2024/05/18 15:29

http://vjudge.net/problem/viewProblem.action?id=19531


这个问题是请你做2个整数X,Y相乘。 (0 <= X,Y < 10250)


Input


每组测试资料2列,各有1个整数,分别代表X和Y。


Output


对每组测试资料请输出X*Y的结果。

又是数组越界

t有可能小于0

#include <iostream>#include<cstring>#include<cstdlib>#include<string>#include<cstdio>#include<queue>#include<stack>#include<vector>#include<map>#include<list>#include<set>#define INF (1<<30)using namespace std;char a[300]={0},b[300]={0};int main(){    while(scanf("%s %s",a,b)!=EOF)    {        int la=strlen(a)-1,lb=strlen(b)-1;        int aa[300]={0},bb[300]={0},t=0;        for(int i=la;i>=0;i--)            aa[t++]=a[i]-'0';        t=0;        for(int j=lb;j>=0;j--)            bb[t++]=b[j]-'0';        int c[600]={0};        for(int i=0;i<=la;i++){            for(int j=0;j<=lb;j++)            {                c[i+j]+=aa[i]*bb[j];            }        }        t=0;        for(int i=0;i<600;i++)        {            c[i]+=t;            t=c[i]/10;            c[i]%=10;        }        t=599;        while(c[t]==0&&t>0) t--;        for(;t>=0;t--)            printf("%d",c[t]);        printf("\n");        memset(a,0,sizeof(a));        memset(b,0,sizeof(b));    }    return 0;}


0 0
原创粉丝点击