高精度加法模板,包装结构体

news2024/9/20 8:03:17

本题链接:用户登录

题目:

样例:

输入
123 456

输出
579

模板结构体:


struct BigInt
{
	string values;
	inline BigInt Add(const BigInt &ta,const BigInt &tb)
	{
		BigInt ans;
		ans.values = "";
		string sa = ta.values;
		string sb = tb.values;
		int alen = sa.size();
		int blen = sb.size();
		vector<int>a,b,c;
		for(int i = alen - 1;~i;--i) a.emplace_back(sa[i] - '0');
		for(int i = blen - 1;~i;--i) b.emplace_back(sb[i] - '0');
		int t = 0;
		for(int i = 0;i < alen || i < blen;++i)
		{
			if(i < alen) t += a[i];
			if(i < blen) t += b[i];
			c.emplace_back(t % 10);
			t /= 10;
		}
		if(t) c.emplace_back(1);
		int clen = c.size();
		for(int i = clen - 1;~i;--i) ans.values += char(c[i] + '0');
		return ans;
	}
	friend inline istream& operator>>(istream&cin,BigInt& t)
	{
		cin >> t.values;
		return cin;
	}
	friend inline ostream& operator<<(ostream&cout,BigInt t)
	{
		cout << t.values;
		return cout;
	}
	inline BigInt operator+(BigInt t)
	{
		return Add(*this,t);	
	}
};

思路:

        大整数,高精度,运算原理跟我们小学进行的笔算原理一样的,模拟一遍即可。

代码详解如下:

#include <iostream>
#include <cstring>
#include <vector>
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;

struct BigInt
{
	string values;
	inline BigInt Add(const BigInt &ta,const BigInt &tb)
	{
		BigInt ans;			// 建立返回值
		ans.values = "";	// 返回值初始化
		
		string sa = ta.values;	// 取出整数 a 的值
		string sb = tb.values;	// 取出整数 b 的值
		
		int alen = sa.size();	// 获取整数 a 的位数
		int blen = sb.size();	// 获取整数 b 的位数
		
		vector<int>a,b,c;	// 定义存储计算过程的数组
		
		// 将字符串反向转化为数组方便运算。
		// 由于string是由高位到低位的存储,所以我们反向,方便运算个位等低位的运算
		for(int i = alen - 1;~i;--i) a.emplace_back(sa[i] - '0');
		for(int i = blen - 1;~i;--i) b.emplace_back(sb[i] - '0');
		
		int t = 0;	// 临时变量 t 存储同一位数上的累加结果
		// 开始累加过程
		for(int i = 0;i < alen || i < blen;++i)
		{
			// 如果对应的位数存在,那么开始累加
			if(i < alen) t += a[i];
			if(i < blen) t += b[i];
			
			// 取出当前位的累加结果
			c.emplace_back(t % 10);
			
			// 除掉当前位,若可以进位则进位
			t /= 10;
		}
		// 如果计算结果最后还有进位,我们就开始进位
		if(t) c.emplace_back(1);
		
		int clen = c.size();	// 获取最终计算结果位数
		// 颠倒重新由高位存储低位
		for(int i = clen - 1;~i;--i) ans.values += char(c[i] + '0');
		return ans;	// 返回结果
	}
	
	// 重载输入
	friend inline istream& operator>>(istream&cin,BigInt& t)
	{
		cin >> t.values;
		return cin;
	}
	// 重载输出
	friend inline ostream& operator<<(ostream&cout,BigInt t)
	{
		cout << t.values;
		return cout;
	}
	// 重载累加
	inline BigInt operator+(BigInt t)
	{
		return Add(*this,t);	
	}
};
inline void solve()
{
	BigInt a,b;
	cin >> a >> b;
	cout << (a + b) << endl;
}
signed main()
{
	IOS;
	int ___t = 1;
//	cin >> ___t;
	while(___t--)
	{
		solve();
	}
	
	return 0;
}

最后提交:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1422215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ETL怎么实现文件处理

在现代企业及各类组织的日常运作中&#xff0c;数据作为一种关键的信息资源&#xff0c;其管理和分析能力直接影响到决策效率与准确性。文件作为数据的主要载体&#xff0c;承载着从运营报告、客户记录、交易明细等各种类型的数据信息。这些海量且多样的文件数据在未经处理的情…

道理都懂,就是做不到,怎么办?

世界上最遥远的距离是什么&#xff1f; 我想&#xff0c;对许多人来说&#xff0c;多半是「知」与「行」之间的距离。 想一想&#xff0c;你有多少次发出感叹&#xff1a;这些我都知道&#xff0c;但我就是做不到&#xff0c;怎么办呢&#xff1f; 有多少次&#xff0c;你反复告…

matlab自定义函数实现图像小波变换

matlab中提供了小波变换函数lwt和ilwt&#xff0c;可以方便地实现提升小波变换。 我们按照小波变换的定义&#xff0c;粗糙地实现一个针对图像的小波变换&#xff0c;如下&#xff1a; % 使用方法&#xff1a; img imread(lena256.bmp); % 假设lena.png是灰度图像 subplot(2…

dom监听元素 从display: none到页面中

其实业务中还是会碰见这样的需求的&#xff0c;特别是一些框架内不&#xff0c;这个并不是很复杂&#xff0c;我们可以考虑如何去监听到 dom元素样式属性的变化就可以 很多童鞋可能对原生js的不够熟悉&#xff0c;现在大多数同学 只要会写简单的vue操作 就可以 做一些基础的前…

华为配置在用户物理位置变化时部署业务随行示例(V200R006C00、V200R007C00、V200R008C00)

配置在用户物理位置变化时部署业务随行示例&#xff08;V200R006C00、V200R007C00、V200R008C00&#xff09; 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步骤配置文件 组网图形 图1 组网图 业务随行简介配置注意事项组网需求需求分析数据规划配置思路操作步…

【Time Series】LSTM代码实战

一、简介 还是那句话&#xff0c;"时间序列金融"是一个很有"钱"景的话题&#xff0c;还是想尝试采用Stock时间序列预测任务DeepLearning。本文提供了LSTM预测股票的源代码。 二、算法原理 长短期记忆网络&#xff08;LSTM&#xff09;是一种特殊的循环神经…

瑞士0.5米高程地形瓦片数据介绍

一、背景 瑞士是位于中欧的一个国家&#xff0c;以其美丽的自然风光、高质量的生活和强大的金融体系而闻名&#xff0c;其位于欧洲中部&#xff0c;四面环山&#xff0c;与德国、法国、意大利、奥地利和列支敦士登等国家接壤。瑞士境内有许多湖泊和阿尔卑斯山脉的一部分。瑞士…

Redis常见数据类型[上]

目录 前言&#xff1a; 基本全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构和内部编码 内部编码&#xff1a; 单线程架构 引出单线程模型&#xff1a; 为什么单线程还这么快&#xff1f; String字符串 字符串数据类型&#xff1a; 常见命令&#xff1a; S…

uniapp微信小程序-分包

一、为什么要分包 微信小程序每个分包的大小是2M&#xff0c;总体积一共不能超过20M,当然你也可以提升启动速度&#xff0c;降低首次加载时间&#xff0c;模块化开发&#xff0c;按需加载&#xff0c;提高性能。 二、分包步骤 1.首先在 mainfest.json mp-weixin添加以下代码&a…

用Python库pillow处理图像

入门知识 颜色。如果你有使用颜料画画的经历&#xff0c;那么一定知道混合红、黄、蓝三种颜料可以得到其他的颜色&#xff0c;事实上这三种颜色就是美术中的三原色&#xff0c;它们是不能再分解的基本颜色。在计算机中&#xff0c;我们可以将红、绿、蓝三种色光以不同的比例叠加…

Git快速入门+常用指令

Git创建本地仓库 1、创建一个文件夹&#xff0c;右键选择Git Bash Here 2、选择下列其中一个方法 方法一&#xff1a;创建初始化仓库 git init 方法二&#xff1a;克隆远程仓库 git clone [url] IDEA集成Git 按步骤操作会自动创建本地仓库 上传步骤 1、提交 2、输入上…

客户端熔断器基于golang Grpc具体实现

目录 前言 一、什么是Google SRE 二、Google SRE 熔断器的工作流程&#xff1a; 三、Google SRE GRPC 代码实现 四、测试用例 大家可以关注个人博客&#xff1a;xingxing – Web Developer from Somewhere 有关后端问题探讨 前言 当某个用户超过资源配额时&#xff0c…

EPSON RC 机器人-第一个程序

创建项目 有机械人且用USB线连接好。可以USB。没有真机的选择 C4 Sample 可以运行程序。 否刚会提示【不能连接到控制器&#xff0c;未安装USB驱动器】 代码 按F5打开运行窗口 再点【开始】 点 【是】&#xff0c;查看运行结果

分布式ID介绍实现方案总结

分布式 ID 介绍 什么是 ID&#xff1f; 日常开发中&#xff0c;我们需要对系统中的各种数据使用 ID 唯一表示&#xff0c;比如用户 ID 对应且仅对应一个人&#xff0c;商品 ID 对应且仅对应一件商品&#xff0c;订单 ID 对应且仅对应一个订单。 我们现实生活中也有各种 ID&…

[BUUCTF]-Web:[GXYCTF2019]Ping Ping Ping解析

先看网页 按照正常流程&#xff0c;先ipls&#xff0c;可以看到flag 但是不能直接得flag&#xff0c;他应该是过滤掉了一点东西。 这里考虑过滤掉了空格 空格过滤绕过&#xff1a; %20 %09 ${IFS} $IFS$1 {IFS} < <> 空格绕过之后发现还是打不开flag.php,但报错语句…

【Vue】二、Vue 组件展示控制的优雅解决方案

vue项目中展示的组件&#xff0c;我平常都是通过v-show进行展示控制&#xff0c;类似这样 通常情况下&#xff0c;一个正常展示组件的流程&#xff0c;是通过前端用户点击触发函数&#xff0c;在函数中对data数据进行操作&#xff0c;从而展示不同的页面 showWork: false, sho…

ansible 常用命令 基本说明 个人备忘

linux下设置一台机器的名称为ansible hostnamectl set-hostname ansible //设置一台机器的名称为master-01 hostnamectl set-hostname master-01 hostnamectl set-hostname master-02 hostnamectl set-hostname node01 hostnamectl set-hostname node02 hostnamectl set-…

仅2个月就实现37家门店自动化覆盖100%的集团公司,到底做对了啥?

在各种AI技术不断被广泛运用于各大企业数字化转型的2024年&#xff0c;有这样一家拥有全国数百家汽车销售门店的500强集团公司&#xff0c;在迎接不断激增门店业务量的同时&#xff0c;持续探索能够确保数百家门店准确、高效运转&#xff0c;并努力将客户满意度维持在一个较高水…

虹科方案|释放总线潜力:汽车总线离线模拟解决方案

导读&#xff1a;传统的ECU模拟工具通常需要依赖上位机软件来发起通信&#xff0c;这在离线场景和自动化产线中带来不便。为了应对这一挑战&#xff0c;虹科推出了创新的汽车总线离线模拟解决方案&#xff0c;基于PCAN-Router系列网关&#xff0c;通过内部可编程固件&#xff0…