标签:
给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。
读入两个用空格隔开的正整数
输出A*B的值
3 12
36
两个正整数的位数不超过500位
#include<cstdio> #include<iostream> #include<cstring> #define ref(i,x,y)for(int i=x;i<=y;i++) #define def(i,x,y)for(int i=x;i>=y;i--) using namespace std; int lena,lenb,x,a[101000],b[101000],c[101000]; char a1[101000],b1[101000],n[101000]; int main() { scanf("%s%s",a1,b1); lena=strlen(a1);lenb=strlen(b1); ref(i,0,lena-1) a[lena-i]=a1[i]-48; ref(i,0,lenb-1) b[lenb-i]=b1[i]-48; ref(i,1,lena){ x=0; ref(j,1,lenb){ c[i+j-1]+=a[i]*b[j]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[lenb+i]=x; } int j=lena+lenb; while(c[j]==0&&j>1) j--; def(i,j,1) printf("%d",c[i]); return 0; }
标签:
原文地址:http://www.cnblogs.com/shenben/p/5558845.html