![]() |
#2
南国利剑2010-04-16 00:24
|

#include<iostream>
using namespace std;
const int size=111;
char a[size],b[size];
int main(){int i,j,k;
while(cin>>a>>b){
int s1=strlen(a);
int s2=strlen(b);
int c[size]={0},d[size]={0};
for(k=0,j=0;k<s1;k++)
c[j++]=a[s1-1-k]-'0';
for(k=0,j=0;k<s2;k++)
d[j++]=b[s2-1-k]-'0';
int ans[222]={0};
for(i=0;i<s2;i++)
for(j=0;j<s1;j++){
ans[i+j]+=c[j]*d[i];
}
for(i=0;i<222;i++){
if(ans[i]>=10){
ans[i+1]+=ans[i]/10;
ans[i]=ans[i]%10;
}
}
int l=0;
while(ans[size-1-l]==0&&size-1-l>0)l++;
for(i=size-1-l;i>=0;i--)cout<<ans[i];
cout<<endl;
}
return 0;
}
这是高精度的问题 ,找不错误啊!各位帮帮忙 using namespace std;
const int size=111;
char a[size],b[size];
int main(){int i,j,k;
while(cin>>a>>b){
int s1=strlen(a);
int s2=strlen(b);
int c[size]={0},d[size]={0};
for(k=0,j=0;k<s1;k++)
c[j++]=a[s1-1-k]-'0';
for(k=0,j=0;k<s2;k++)
d[j++]=b[s2-1-k]-'0';
int ans[222]={0};
for(i=0;i<s2;i++)
for(j=0;j<s1;j++){
ans[i+j]+=c[j]*d[i];
}
for(i=0;i<222;i++){
if(ans[i]>=10){
ans[i+1]+=ans[i]/10;
ans[i]=ans[i]%10;
}
}
int l=0;
while(ans[size-1-l]==0&&size-1-l>0)l++;
for(i=size-1-l;i>=0;i--)cout<<ans[i];
cout<<endl;
}
return 0;
}