当前位置:网站首页>大整数的加与乘;

大整数的加与乘;

2022-06-12 02:55:00 HENU_Lzey

大整数的加与乘;
1.加

#include<bits/stdc++.h>
using namespace std;
int a[10000],b[10000],c[10000];
char a1[10000],b1[10000];
int cnt,i,j;
int main(){
    
  cin>>a1>>b1;
  int lena=strlen(a1);
  int lenb=strlen(b1);
  int len=max(lena,lenb)+1;
  for(i=1;i<=lena;i++)a[i]=a1[lena-i]-'0';
  for(i=1;i<=lenb;i++)b[i]=b1[lenb-i]-'0';
  for(i=1;i<=len;i++){
    

    c[i]+=a[i]+b[i];
    c[i+1]=c[i]/10;
    c[i]=c[i]%10;

}
	while(c[len]==0&&len>1)len--;
	for(i=len;i>=1;i--)cout<<c[i];
	return 0;
}

大整数乘法;

#include<bits/stdc++.h>
using namespace std;
char a1[10001],b1[10001];//定义此数组的目的是为了便于输入; 
int a[10001],b[10001],c[10001];
int i,len,j; 
int main ()
{
    
    cin>>a1>>b1;//
    int lena=strlen(a1);//
	int lenb=strlen(b1);//
    for(i=1;i<=lena;i++)a[i]=a1[lena-i]-'0';//倒序输入; 
    for(i=1;i<=lenb;i++)b[i]=b1[lenb-i]-'0';//倒序输入; 
	for(i=1;i<=lenb;i++)
	for(j=1;j<=lena;j++)
	c[i+j-1]+=a[j]*b[i];//在计算乘法的时候先不考虑进位,之后再加上去就行。
    for(i=1;i<lena+lenb;i++)//j是指正常的计算进位(一位一位进行乘法计算),而i就是我们说的错位相加。 
	  if(c[i]>9)//此时再考虑进位; 
	{
    
		c[i+1]+=c[i]/10;
		c[i]%=10;
	}
	len=lena+lenb;
    while(c[len]==0&&len>1)len--;//去除前导零 ; 
    for(i=len;i>=1;i--)cout<<c[i];//倒序输出; 
    return 0;
}
原网站

版权声明
本文为[HENU_Lzey]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_50518617/article/details/111875652