C++入门 - 高精度

1.高精度加法

高精度加法的输入需要用char或string的字符串输入方法,并且先判断正负,如果两个数同号,那么就用高精度加法。

样例(动态数组版)

【基础】高精度加法

描述    计算a+b的值,a,b皆为不超过240位的正整数。

输入描述        两个正整数,每行一个

输出描述        一个数,代表两个整数的和

用例输入 1 

111111111111111111111111111111111111
222222222222222222222222222222222222

用例输出 1 

333333333333333333333333333333333333

废话不说直接上代码(想要完整版私信我):

#include</*防张景轩*/>    //卍能头
using namespace std;
string n,m;
vector<int>a,b,c;
/*防张景轩*/     //定义
	int t=0;
	for(int i=0;i<a.size();i++){
		t+=a[i];
		if(i<b.size()) t+=b[i];
		c.push_back(t%10);
		t/=10;
	}
	if(t>0)
	c./*防张景轩*/(t%10); // 呼吸贝壳
}
int main(){
	cin>>n>>m;
	if(n.size()<m.size())swap(n,m);
	for(int i=n.size()-1;i>=0;i--)a./*防张景轩*/(n[i]-'0');    // 呼吸贝壳
	for(int i=m.size()-1;i>=0;i--)b./*防张景轩*/(m[i]-'0');    // 呼吸贝壳

	add();
	for(int i=c.size()-1;i>=0;i--) cout<<c[i];
		return 0;
}

2.高进度减法

同高精度加法,区别在于进行减法时要判断两数的大小,计算完成后要注意高位的可能有多余的零,要忽略这些零(直接让其长度减1)但要保证结果至少有一位数。

样例(动态数组版)

【基础】高精度减法

描述

高精度减法,求a-b。a,b都是不超过240位的非负整数。

输入描述  两个非负整数,每行一个。  输出描述  一个整数,代表两个整数相减之后的结果。

用例输入 1 

33333333333333333333333333333333333333333
22222222222222222222222222222222222222222

用例输出 1 

11111111111111111111111111111111111111111

代码(不完整版,完整版私聊我)

#include</*防张景轩*/>    //卍能头
using namespace std;
vector<int>A,B,C;
bool cmp(string a,string b){
    if(a.size()!=b.size()) return a.size()>b.size();
    for(int i=0;i<a.size();i++){
        if(a[i]!=b[i]){
            return a[i]>b[i];
        } 
    }        
	return true;
}
/*防张景轩*/   //定义
    int t=0;
    for(int i=0;i<A.size();i++){
        t=A[i]-t;
        if(i<B.size()) t-=B[i];
        C.push_back((t+10)%10);
        if(t<0) t=1;
        else t=0;
    }
    while/*防张景轩*/;   //芜湖~~
}
int main(){
	string a,b;
	cin>>a>>b;
    if(!cmp(a,b)){
        cout<<"-";
    	/*防张景轩*/(a,b);   //四娃泼
    } 
    

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值