大数加法和乘法
发布时间:2020-12-14 02:34:16 所属栏目:大数据 来源:网络整理
导读:#includeiostream #includecstdio #includecstring const int Len= 5000 //大数的长度 using namespace std ; int Input ( char n[]) //将大数读入的函数 { char s[Len]; int l; for ( int i= 0 ; iLen; i++) n[i]= 0 ; if ( scanf ( "%s" ,s) 1 ) return -
#include<iostream>
#include<cstdio>
#include<cstring>
const int Len=5000//大数的长度
using namespace std;
int Input (char n[])//将大数读入的函数
{
char s[Len];
int l;
for(int i=0; i<Len; i++) n[i]=0;
if(scanf("%s",s)<1) return -1;
l= strlen(s);
for(i=0; i<l; i++) //将输入的大数逆置
n[i]=s[l-i-1]-'0';
}
int Print (char n[])
{
int i;
for(i=Len-1; i>0; i--)
if(n[i]!=0) break;
for(; i>=0; i--)
printf("%d",n[i]);
printf("n");
}
void Add (char a[],char b[],char c[])//大数加法
{
int i=0;
for(i=0; i<Len; i++)
c[i]=a[i]+b[i];
for(i=0; i<Len; i++) //处理进位
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
}
void Mul(char a[],char c[])//大数乘法
{
int i,j;
int alen=strlen(a),blen=strlen(b);
for(i=0; i<Len; i++) c[i]=0;
for(i=0; i<alen; i++)
for(j=0; j<blen; j++) //处理进位
{
c[i+j]+=a[i]*b[j];
if(c[i+j]>=10)
{
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
}
int main()
{
char a[Len],b[Len],c[Len];
Input(a);
Input(b);
Add(a,b,c);
Print(c);
Mul(a,c);
Print(c);
return 0;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |