问题描述
在C/C++语言中,整型所能表示的范围一般为-2
31到2
31(大约21亿),即使long long型,一般也只能表示到-2
63到2
63。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
现在输入两个整数,请输出它们的乘积。
现在输入两个整数,请输出它们的乘积。
输入格式
两行,每行一个正整数,每个整数不超过10000位
输出格式
一行,两个整数的乘积。
样例输入
99
101
101
样例输出
9999
数据规模和约定
每个整数不超过10000位
就是大数乘法
#include <iostream>
#include <cstdio>
using namespace std;
int a[10000],b[10000],ans[20000]={0};
int main() {
string s1,s2;
cin>>s1>>s2;
for(int i=0;i<s1.length();i++)
a[i]=s1[i]-'0';
for(int i=0;i<s2.length();i++)
b[i]=s2[i]-'0';
for(int i=0;i<s1.length();i++)
for(int j=0;j<s2.length();j++)
{
ans[i+j]+=a[i]*b[j];
}
for(int i=s1.length()+s2.length()-1;i>0;i--)
{
if(ans[i]>=10)
{
ans[i-1]+=ans[i]/10;
ans[i]%=10;
}
}
for(int i=0;i<s1.length()+s2.length()-1;i++)
printf("%d",ans[i]);
return 0;
}