求两数的积。
两行,两个整数。
一行一个整数表示乘积。
输入 1 2 输出 2
每个数字不超过 102000,需用高精。
#include<iostream> #include<cstring> #include<cmath> using namespace std; const int maxn=50001; char a1[maxn],b1[maxn]; int a[maxn],b[maxn],i,x,len,j,c[maxn]; int main() { cin>>a1>>b1; a[0]=strlen(a1); b[0]=strlen(b1); for(i=1;i<=a[0];++i) a[i]=a1[a[0]-i]-'0'; for(i=1;i<=b[0];++i) b[i]=b1[b[0]-i]-'0'; for(i=1;i<=a[0];++i) { for(j=1;j<=b[0];++j) { c[i+j-1]+=a[i]*b[j]; } } len=a[0]+b[0]; for(i=1;i<len;++i) { if(c[i]>9) { c[i+1]+=c[i]/10; c[i]%=10; } } while(c[len]==0&&len>1) len--; for(i=len;i>=1;--i) { cout<<c[i]; } return 0; }