时间限制: 1000 ms 内存限制: 65536 KB
提交数: 49765 通过数: 18971
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
输入两个高精度正整数M和N。
求这两个高精度数的积。
36
3
108
#include#include #include char a[105],b[105],c[10005]={'\0'}; int multi(char t[],int t1,int m,int i)//串a的乘法(相对应的加法) { for(int l=m-1;l>=0;l--){ for(int k=1;k<=t1;k++) { c[i]+=(t[l]-'0');//放在c数组中 if(c[i]>=10) { c[i+1]+=1; c[i]-=10; } } i++;} return i; } using namespace std; int main() { int i=0,j,n,k=0,m=0,t=0,sum; scanf("%s",a); scanf("%s",b); m=strlen(a); n=strlen(b); for(i=n-1;i>=0;i--) { t=b[i]-'0'; sum=multi(a,t,m,k);//a串自相加t次,m是a串的长度,k是相加时的低位 k++; } if(c[m+n-1]>0) putchar(c[m+n-1]+'0');//如果高位上还有数,先输出来 for(int i=m+n-2;i>=0;i--)//依次从高位输出字符 printf("%c",c[i]+'0'); }