IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 高精a+b -> 正文阅读

[C++知识库]高精a+b

题目大意

输入a,b,输出 a + b a+b a+b

解题思路

这一题,数据范围很小,可以使用c++内置的加法,但也可以使用高精度算法。

代码实现

内置方法

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long a,b;
	cin>>a>>b;//输入a,b,cin属于iostream库,还要使用命名空间std
	cout<<a+b;//输出a+b的和,cout属于iostream库,还要使用命名空间std
}

高精度

#include<bits/stdc++.h>
using namespace std;
string a,b;
string jia(string jia1,string jia2)
{
	string a[3],ans="";
	bool flag=false;
	int d=0,l=0,jsa=0,jsb=0,t=0,c=0;
	a[1]=jia1;
	a[2]=jia2;
	if(a[1].size()>a[2].size())
		d=2;
	else
		d=1;
	l=max(a[1].size(),a[2].size())-min(a[1].size(),a[2].size());
	for(int i=1;i<=l;i++)
		a[d]="0"+a[d];
	a[1]='0'+a[1];
	a[2]='0'+a[2];
	for(int i=a[1].size()-1;i>=0;i--)
	{
		jsa=a[1][i]-'0';
		jsb=a[2][i]-'0';
		t=jsa+jsb+c;
		c=t/10;
		a[0]=a[0]+char(t%10+48);
	}
	int j=a[0].size()-1;
	if(a[0][a[0].size()-1]=='0')
		j--;
	for(int i=j;i>=0;i--)
		ans+=a[0][i];
	return ans;
}
string jian(string jian1,string jian2)
{
	int d=0,l=0,jw=0,t=0;
	string a[3],ans="";
	bool flag=false;
	a[1]=jian1;
	a[2]=jian2;
	if(a[2][0]=='-')
		if(a[1][0]=='-')
			ans+="-",a[1]=a[1].substr(1,a[1].size()-1),a[2]=a[2].substr(1,a[2].size());
		else
			return jia(a[1],a[2].substr(1,a[2].size()-1));
	else if(a[1][0]=='-')
		return "-"+jia(a[1].substr(1,a[1].size()-1),a[2]);
	if(a[1].size()==a[2].size()&&a[1]<a[2]||a[1].size()<a[2].size())
	{
		ans+="-";
		swap(a[1],a[2]);//a-b=-(b-a)
	}
	if(a[1].size()>a[2].size())
		d=2;
	else
		d=1;
	l=max(a[1].size(),a[2].size())-min(a[1].size(),a[2].size());
	for(int i=1;i<=l;i++)
		a[d]="0"+a[d];
	for(int i=a[1].size()-1;i>=0;i--)
	{
		if((a[1][i]-'0')<(a[2][i]-'0')+jw)
		{
			t=(a[1][i]-'0')+10-jw-(a[2][i]-'0');
			jw=1;
		}
		else
		{
			t=(a[1][i]-'0')-jw-(a[2][i]-'0');
			jw=0;
		}
		a[1][i]=char(t+'0');
	}
	int j=0;
	while(a[1][j]=='0'&&j<a[1].size()-1) j++;
	for(int i=j;i<a[1].size();i++)
		ans+=a[1][i];
	if(ans[1]=='-')
		ans=ans.substr(2,ans.size()-2);
	if(ans.substr(0,2)=="-0")
		ans=ans.substr(1,ans.size()-1);
	return ans;
} 
int main()
{
	cin>>a>>b;
	if(b[0]=='-')
	{
		cout<<jian(a,b.substr(1,b.size()));//加上负数->减去正数
	}
	else
	{
		cout<<jian(a,"-"+b);//加上正数->减去负数
	}
}

样例1

输入

10 21

输出

31

样例2

输入

10 -21

输出

-11

样例3

输入

30 -21

输出

9

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:21:43  更:2021-08-22 13:21:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 5:18:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计