今天继续刷牛客,求两个大整数相乘。
分析:
输入两个大整数都是用字符串表示,因此,可以通过乘法的规律,将一个字符串的每一位与另一个字符串进行相乘,乘积进行相加(不是简单的相加),最后得到的结果放入容器中,最后输出。
问题:
1、容器的使用;
2、注意下标的设置。
附上C++代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
string s1,s2;
cin>>s1>>s2;
vector<int> num1(s1.length(),0);
vector<int> num2(s2.length(),0);
vector<int> ans(s1.length()+s2.length(),0);
vector<int> ji(s1.length()+1,0);
for(int i=s1.length()-1,j=0;i>=0;--i)
num1[j++]=s1[i]-'0';
for(int i=s2.length()-1,j=0;i>=0;--i)
num2[j++]=s2[i]-'0';
int cheng,jin,jin1,he,x,k;
for(int i=0;i<num2.size();++i)
{
jin=0,cheng=0,jin1=0,he=0,x=0;
for(int j=0;j<num1.size();++j)
{
cheng=num1[j]*num2[i]+jin;
ji[x++]=cheng%10;
jin=cheng/10;
}
ji[x]=jin;
for(k=0;k<ji.size();++k)
{
he=ji[k]+ans[k+i]+jin1;
ans[k+i]=he%10;
jin1=he/10;
}
}
while(ans[ans.size()-1]==0) ans.pop_back();
for(int i=ans.size()-1;i>=0;--i)
cout<<ans[i];
return 0;
}
然而Python没有那么多设置,不会出现整型溢出的情况。因为Python中数据存放是动态的可变长的结构,可以用数组或字符串来表示大数。
附上Python代码:
s=input().split(' ')
print(str(int(s[0])*int(s[1])))