C++高精度模板

目录

一.高精度介绍

二.模板

感谢各位大佬的阅读!


一.高精度介绍

通常,我们只会用string去做关于字符串的题,但是高精度还有另外一个用法,那就是高精度。众所周知,int的范围是-2147483648到2147483647,long long的范围是-2^63到2^63-1。但是有一些题它的范围大于int和long long的范围,这是就需要高精度来帮忙。这是它的定义:

二.模板

高精加:

#include<bits/stdc++.h>
using namespace std;
string a,b;
int s1[255],s2[255],s3[255];
int main(){
	cin>>a>>b;
	int len1=a.size();
	int len2=b.size();
	for(int i=0;i<len1;i++){
		s1[i]=a[len1-i-1]-'0';
	}
	for(int i=0;i<len2;i++){
		s2[i]=b[len2-i-1]-'0';
	}
	int maxn=max(len1,len2);
	int x=0;
	for(int i=0;i<=maxn;i++){
		s3[i]=s1[i]+s2[i]+x;
		x=s3[i]/10;
		s3[i]%=10;
	}
	if(s3[maxn]>0) maxn++;
	for(int i=maxn-1;i>=0;i--) cout<<s3[i];
	return 0;
}

高精减:

#include<bits/stdc++.h>
using namespace std;
string a,b;
int s1[114514],s2[114514],s3[114514];
int main(){
	cin>>a>>b;
	int len1=a.size();
	int len2=b.size();
	int maxn=max(len1,len2);
	if(len1<len2){
		cout<<"-";
        swap(a,b);
        swap(len1,len2);
    }
	if(len1==len2){
		for(int i=0;i<maxn;i++){
			if(a[i]<b[i]){
				swap(a,b);
                swap(len1,len2);
                cout<<"-";
				break;
			}
			
		}
	}
	for(int i=0;i<len1;i++){
		s1[i]=a[len1-i-1]-'0';
	}
	for(int i=0;i<len2;i++){
		s2[i]=b[len2-i-1]-'0';
	}
	for(int i=0;i<=maxn;i++){
		if(s1[i]-s2[i]<0){
			s1[i]+=10;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值