Description
输入两个高精度整数M和N(M和N均不小于0且不超过100位)。求这两个高精度数的积。
Input
每一组测试数据占2行,一行一个整数
Output
每一组测试数据输出占一行,输出乘积
Sample Input
36 3
Sample Output
108
思路:典型的高精度问题,两个变量控制结果,i和j控制sum数组,并考虑进位,两个数的最大位就是两个位数加起来,最后输出时把前面的零去掉.(建议手动写一下过程)
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
char num_1[101],num_2[101];
int Num_1[101],Num_2[101],Sum[10001];
int main(){
while(cin>>num_1>>num_2){
memset(Sum,0,sizeof(Sum));
int length_1 = strlen(num_1);
int length_2 = strlen(num_2);
for(int i=0;i<length_1;i++)
Num_1[length_1-i-1] = num_1[i]-48;
for(int i=0;i<length_2;i++)
Num_2[length_2-i-1] = num_2[i]-48;
for(int i=0;i<length_1;i++)
{
int x=0;
for(int j=0;j<length_2;j++){
Sum[i+j] = Num_1[i]*Num_2[j]+x+Sum[i+j];
x=Sum[i+j]/10;
Sum[i+j] = Sum[i+j]%10;
}
Sum[i+length_2] = x;
}
int length_3 = length_1 + length_2;
while(Sum[length_3]==0&&length_3>0){
length_3--;
}
for(int i=length_3;i>=0;i--)
cout<<Sum[i];
cout<<endl;
}
}