大数相乘
Posted caijiaming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数相乘相关的知识,希望对你有一定的参考价值。
题目链接:https://www.51nod.com/Challenge/Problem.html#!#problemId=1027
题意:给出2个大整数A,B,计算A*B的结果。
就是大数相乘板子
看代码:
#include<iostream> #include<string.h> #include<algorithm> using namespace std; const int maxn=2000+5; int main() { string s1,s2; int ans[maxn]; memset(ans,0,sizeof(ans)); cin>>s1>>s2; reverse(s1.begin(),s1.end());//翻转一下 使得进位更方便 reverse(s2.begin(),s2.end()); int len1=s1.length(); int len2=s2.length(); for(int i=0;i<len1;i++)//模拟相乘过程 { for(int j=0;j<len2;j++) { ans[i+j]+=(s1[i]-‘0‘)*(s2[j]-‘0‘); ans[i+j+1]+=ans[i+j]/10; ans[i+j]%=10; } } int flag=0; for(int i=len1+len2-1;i>=0;i--)//最长的时候是二者长度相加-1 { if(flag==0&&ans[i]!=0)//判断前导0 { flag=1; } if(flag) cout<<ans[i]; } cout<<endl; if(flag==0) cout<<0<<endl;//全为0的情况 return 0; }
以上是关于大数相乘的主要内容,如果未能解决你的问题,请参考以下文章