大数加法和乘法
Posted mch5201314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数加法和乘法相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int ans[N];
string a,b;
int x[N],y[N];
void Plus(int ma){
memset(ans,0,sizeof(ans));
printf("加法结果为
");
for(int i=0;i<ma;i++)
ans[i]+=x[i]+y[i];
for(int i=0;i<=ma;i++)
if(ans[i]>=10) {
ans[i+1]+=ans[i]/10; ans[i]%=10;
}
bool flag=0;
for(int i=ma+1;i>=0;i--)
{
if(flag) cout<<ans[i];
else if(ans[i]&&!flag){
cout<<ans[i]; flag=1;
}
else continue;
}
cout<<endl;
}
void times(int la,int lb){
memset(ans,0,sizeof(ans));
for(int i=la-1;i>=0;i--)
for(int j=lb-1;j>=0;j--){
ans[i+j]+=x[i]*y[j];
}
for(int i=0;i<la+lb;i++)
if(ans[i]>=10){
ans[i+1]+=ans[i]/10; ans[i]%=10;
}
bool flag=0;
printf("乘法结果为
");
for(int i=la+lb;i>=0;i--){
if(flag)
cout<<ans[i];
else if(ans[i]&&!flag){
cout<<ans[i];
flag=true;
}
else continue;
}
cout<<endl;
}
int main(){
printf("输入两个字符串代表两个数
");
while(cin>>a>>b){
int la=a.length(),lb=b.length();
int ma=max(la,lb);
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
int cnt=0;
for(int i=la-1;i>=0;i--)
x[cnt++]=a[i]-‘0‘;
cnt=0;
for(int i=lb-1;i>=0;i--)
y[cnt++]=b[i]-‘0‘;
Plus(ma);
times(la,lb);
printf("输入两个字符串代表两个数
");
}
return 0;
}
以上是关于大数加法和乘法的主要内容,如果未能解决你的问题,请参考以下文章