7-10 高精度乘法 (10 分)
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
输入格式:
输入两个高精度正整数M和N。
输出格式:
求这两个高精度数的积
输入样例:
5 7
输出样例:
35
作者
严华云
单位
湖州师范学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<bits/stdc++.h>
using namespace std;
void cheng(int *n1,int *n2,int *res){
res[0]=n1[0]+n2[0];
for(int i=1;i<=n1[0];i++){
for(int j=1;j<=n2[0];j++){
res[i+j]+=n1[i]*n2[j];
}
}
for(int i=1;i<=res[0];i++){
if (res[i]<10)
continue;
res[i+1]+=res[i]/10;
res[i]%=10;
i==res[0]&&res[0]++;
}
}
int main(){
char str1[1000],str2[1000];
int n1[1000],n2[1000],res[1000]={0};
cin>>str1>>str2;
n1[0]=strlen(str1);
for(int i=0;str1[i];i++)
n1[n1[0]-i]=str1[i]-'0';
n2[0]=strlen(str2);
for(int i=0;str2[i];i++)
n2[n2[0]-i]=str2[i]-'0';
cheng(n1,n2,res);
for(int i=res[0]; i>1;i--)
cout<<res[i];
cout<<endl;
return 0;
}