http://vjudge.net/problem/viewProblem.action?id=19531
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;
}