大整数的四则运算


大整数存储形式

整数的高位存储在数组的高位,整数的低位存储在数组的低位

高精度加法

#include<bits/stdc++.h>
using namespace std;
#define nmax 1000
int a[nmax];
int b[nmax];
int c[nmax];

int main()
{
	string s1,s2;
	cin>>s1>>s2;
	int m=s1.length();
	int n=s2.length();
	for(int i=0;i<m;i++)
		a[i]=s1[m-i-1]-'0';
	for(int i=0;i<n;i++)
		b[i]=s2[n-i-1]-'0';
	int carry=0;  //进位 
	int nn=0;
	for(int i=0;i<m||i<n;i++)
	{
		int t=a[i]+b[i]+carry;
		c[nn++]=t%10;
		carry=t/10;
	}	
	if(carry) //处理最高位的进位
		c[nn++]=carry;
	for(int i=0;i<nn;i++)
		cout<<c[nn-i-1];
    return 0;
 } 

高精度减法

#include<bits/stdc++.h>
using namespace std;
#define nmax 1000
int a[nmax];
int b[nmax];
int c[nmax];

int main()
{
	string s1,s2;
	cin>>s1>>s2;
	int m=s1.length();
	int n=s2.length();
	for(int i=0;i<m;i++)
		a[i]=s1[m-i-1]-'0';
	for(int i=0;i<n;i++)
		b[i]=s2[n-i-1]-'0';
	int nn=0;
	for(int i=0;i<m||i<n;i++)
	{
		if(a[i]<b[i])
		{
			a[i+1]--;
			a[i]+=10;
		}
		c[nn++]=a[i]-b[i]; 
	}	
	while(nn-1>=1&&c[nn-1]==0)
		nn--;  //去除最高位的0,同时至少保留一位 
	for(int i=0;i<nn;i++)
		cout<<c[nn-i-1];
	return 0;
 } 

高精度与低精度乘法

#include<bits/stdc++.h>
using namespace std;
#define nmax 1000
int a[nmax];
int c[nmax];

int main()
{
	string s1;
	int b;
	cin>>s1;
	cin>>b;
	int m=s1.length();
	for(int i=0;i<m;i++)
		a[i]=s1[m-i-1]-'0';
	int carry=0;  //进位 
	int nn=0;
	for(int i=0;i<m;i++)
	{
		int t=a[i]*b+carry;
		c[nn++]=t%10;
		carry=t/10;
	}	
	while(carry) //处理最高位剩余进位 
	{
		c[nn++]=carry%10;
		carry/=10;
	}
	for(int i=0;i<nn;i++)
		cout<<c[nn-i-1];
	return 0;
 } 

高精度与低精度除法

#include<bits/stdc++.h>
using namespace std;
#define nmax 1000
int a[nmax];
int c[nmax];

int main()
{
	string s1;
	int b;
	cin>>s1;
	cin>>b;
	int m=s1.length();
	for(int i=0;i<m;i++)
		a[i]=s1[m-i-1]-'0';
	int r=0;  //余数 
	int nn=m;
	for(int i=m-1;i>=0;i--)
	{
		r=r*10+a[i];
		if(r<b)
		c[i]=0;
		else
		{
			c[i]=r/b;
			r=r%b;
		}
	}	
	while(nn-1>=1&&c[nn-1]==0) //去除最高位的0,同时至少保留一位最低位 
		nn--;
	for(int i=0;i<nn;i++)
		cout<<c[nn-i-1];
	return 0;
 } 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大整数四则运算是指对于超过计算机所能表示的整数范围的数字进行加、减、乘、除等运算。在C语言中,可以通过定义结构体或数组来实现大整数的存储和运算。其中,结构体可以存储大整数的位数和每一位的值,而数组则可以将每一位的值存储在不同的元素中。下面是大整数四则运算的一些基本操作: 1.大整数的输入:可以通过将输入的字符串转换为大整数的形式来实现大整数的输入。具体实现方法可以参考引用中的代码。 2.大整数的输出:可以通过遍历大整数的每一位,将其输出来实现大整数的输出。具体实现方法可以参考引用中的代码。 3.大整数的加法:可以通过模拟手算加法的过程,将两个大整数的每一位相加,并将进位的值加到下一位上来实现大整数的加法。 4.大整数的减法:可以通过模拟手算减法的过程,将两个大整数的每一位相减,并将借位的值减到下一位上来实现大整数的减法。 5.大整数乘法:可以通过模拟手算乘法的过程,将两个大整数的每一位相乘,并将进位的值加到下一位上来实现大整数乘法。 6.大整数的除法:可以通过模拟手算除法的过程,将被除数的每一位和商的每一位一一对应,逐位进行除法运算,并将余数带到下一位上来实现大整数的除法。具体实现方法可以参考引用中的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值