算法学习016 高精度加法运算 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析

目录

C++高精度加法运算

一、题目要求

1、编程实现

2、输入输出

二、算法分析

三、程序编写

四、运行结果

五、考点分析

六、推荐资料


C++高精度加法运算

一、题目要求

1、编程实现

用高精度算法实现两个数:m和n,m和n的位数在1到100之间

2、输入输出

输入描述:第一行m,第二行输入n,且m和n的位数在1到100之间

输出描述:只有一行,m和n相加的和

输入样例:

12345678876543218765432187687654

输出样例:

10000000075341975

二、算法分析

  1. 高精度加法算法的基本思想是将大整数按位进行计算,从低位到高位逐个相加,同时需要考虑进位的情况。
  2. 由于位数已经超出常规数据类型,所以需要将相加的数据以字符串的形式读入
  3. 将字符串翻转存入整型数组中,两数之和的位数最大为较大数的位数加 1
  4. 从低位到高位依次两两相加后,再加上上一位的进位,将和模 10 作为本位结果,将和除以 10作为下一位的进位
  5. 重复步骤 4,直到所有位数处理完,
  6. 从后往前找结果数组中第一个非0元素的位置(即去前导 0操作),从该位置开始逆序输出数组中的元素,即为最终的加法结果。

三、程序编写

#include<bits/stdc++.h>
#include<string>
using namespace std;
int A[102],B[102],C[102];
//将字符串转换为对应的整形数组 
int getInt(int t[],string s)
{int len = s.length(); for(int i=0;i<len;i++){t[i] = s[len-i-1]-'0';}return len;
}
int main()
{string s1,s2;cin >> s1 >> s2;int lena = getInt(A,s1);int lenb = getInt(B,s2);int lenc = max(lena,lenb);int k = 0;//进行逐位相加,k作为进位标识 for(int i=0;i<lenc;i++){C[i] = (A[i] + B[i] + k) % 10;k = (A[i] + B[i] + k) / 10;}C[lenc] = k;//最高位//去前导0 while(C[lenc] == 0 && lenc > 0) {lenc--;} for(int i=lenc;i>=0;i--){cout << C[i]; } return 0;
}

 本文作者:小兔子编程 作者首页:小兔子编程-CSDN博客

四、运行结果

1234567887654321
876543218768765410000000075341975

五、考点分析

难度级别:中等,这题相对而言在于如何转变思路,具体主要考查如下:

  1. 分析题目,找到解题思路
  2. 充分掌握字符串的使用
  3. 学会如何转变思路,进行加法进位
  4. 学会高精度加法运算的核心
  5. 学会输入流对象cin的使用,从键盘读入相应的数据
  6. 学会for循环的使用,在确定循环次数的时候推荐使用学会
  7. 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  8. 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
  9. 充分掌握变量定义和使用、分支语句、循环语句和高精度算法的应用

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

六、推荐资料

  • 所有考级比赛学习相关资料合集【推荐收藏】

http://www.ppmy.cn/server/94188.html

相关文章

【考研高数】反函数的那些事

在这里给同学们推荐来自「荒原之梦考研数学」网的三篇文章&#xff0c;分别是反函数的性质汇总&#xff0c;以及两道相关习题&#xff0c;有需要加强这部分练习的同学&#xff0c;可以点击下方链接&#xff0c;在「荒原之梦考研数学」官网中打开对应的文章&#xff1a; 《反函…

llamaindex+Internlm2 RAG实践

一、Llama-Index 1.1 Llama-Index简介 LlamaIndex 是一个基于 LLM 的应用程序的数据框架&#xff0c;受益于上下文增强。 这种 LLM 系统被称为 RAG 系统&#xff0c;代表 “检索增强生成”。 检索增强生成&#xff08;RAG&#xff09;是一种创新的方法&#xff0c;它将搜索系…

Linux基于centOS7 【进度条】【Git】【gdb】学习

目录 进度条 进度条的前置准备 sleep &#xff08;秒&#xff09;& usleep&#xff08;微秒&#xff09; sleep加\n和不加\n的区别 IO函数的缓冲区 回车&换行 10秒倒计时 进度条编写 git的使用 为什么要有git&#xff08;git版本控制器&#xff09; git的主要…

AcWing并查集

建议先看这个 Bilibili------------------>图论——并查集(详细版) 其实M 1 2就是把1的祖先改成了2&#xff0c;然后M 3 4就是把3的祖先改成了4&#xff0c;然后查询这两数1,2的祖先是不是同一个&#xff0c;3,4的祖先是不是同一个&#xff0c;1&#xff0c;3的祖先是不是同…

嵌入式数据库 sqlite3

数据库文件与普通文件区别: 1.普通文件对数据管理(增删改查)效率低 2.数据库对数据管理效率高,使用方便 常用数据库: 1.关系型数据库 将复杂的数据结构简化为二维表格形式 大型:Oracle、DB2 中型:MySql、SQLServer 小型:Sqlite …

7.24数据结构

笔记 数和图 一.树形结构相关概念 1>树形结构&#xff1a;表示数据元素之间存在一对多的关系 2>树&#xff1a;是由一个根节点多个子树构成的树形结构 3>节点&#xff1a;就是树中的数据元素 4>父亲节点&#xff1a;当前节点的直接上级节点 5>孩子节点&#x…

专题九_链表(1)

目录 题型总结 2. 两数相加 解析 题解 24. 两两交换链表中的节点 解析 题解 题型总结 2. 两数相加 2. 两数相加 解析 题解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr)…

7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)

一、列表 1.1 列表 list 有序且可变的容器&#xff0c;可以存放多个不同类型的元素 列表就是专门用来记录多个同种属性的值 列表&#xff1a;存储同一个类别的数据&#xff0c;方便操作 字符串&#xff0c;不可变&#xff1a;即&#xff1a;创建好之后内部就无法修改【内置…

ELK实现nginx mysqld httpd的日志收集

通过配置收集日志文件&#xff0c;发送到可视化页面 API接口&#xff1a; 软件内部代码之间通信的接口&#xff0c;代码的连接&#xff0c;代码之间调用的接口 端口是对外提供访问的接口 filebeat&#xff1a; 1、可以在本机收集日志 2、也可以远程收集日志 3、轻量级的日…

一文带你掌握C++模版

12. C模板 什么是模板 模板编程也可以叫做泛型编程&#xff0c;忽略数据类型的一种编程方式 //求最值问题 int Max(int a,int b) {return a>b?a:b; } double Max(int a,int b) {return a>b?a:b; } string Max(string a,string b) {return a>b?a:b; …

C++11深度剖析

目录 &#x1f680; 前言&#xff1a;C11简介 一&#xff1a; &#x1f525; 统一的列表初始化&#x1f4ab; 2.1 &#xff5b;&#xff5d;初始化 二&#xff1a; &#x1f525; std::initializer_list &#x1f4ab; 2.1 std::initializer_list是什么类型&#x1f4ab; 2.2 s…

<设计模式> 工厂模式

工厂模式 模式介绍&#xff1a;将对象的创建过程封装在工厂类中&#xff0c;客户端代码只需要关心从工厂获取对象的过程&#xff0c;而不需要了解对象的创建细节。这样做的好处包括提高了代码的灵活性和可扩展性&#xff0c;降低了对象之间的耦合度。主要解决接口选择的问题。…

tp5三表关联,查询不满足一定条件的数据

记录&#xff1a;a表关联b表&#xff0c;b表关联c表&#xff0c;查询a表中与c表不一致的数据 场景&#xff1a; 1&#xff0c;三张表&#xff1a;工程师表coach_list&#xff0c;服务表service_list&#xff0c;服务关联的工程师表service_coach。 2&#xff0c;工程师和服务…

智慧水务项目(四)django(drf)+angular 18 添加drf_yasg api接口文档

一、说明 文档api接口是必须的 本来准备用coreapi&#xff0c;据说drf_yasg更流弊 二、步骤 1、requirements.txt添加drf-yasg 2、settings.py中添加部分代码 drf_yasg需要与django.contrib.staticfiles配套使用&#xff0c;一般情况下&#xff0c;项目创建都会在INSTALLE…

linux运维一天一个shell命令之tcpdump详解

一、tcpdump 的概念 tcpdump 是一个数据包捕获工具&#xff0c;能够拦截和显示通过网络接口的数据包。它可以实时捕获数据包&#xff0c;也可以将捕获的数据保存到文件中以便后续分析。tcpdump 支持基于多种条件&#xff08;如 IP 地址、端口号、协议等&#xff09;来捕获特定…

【Linux脚本】Nginx日志分割的shell脚本

环境&#xff1a;CentOS Linux release 7.6.1810 (Core) 编写一个Nginx日志分割的shell脚本,以实现只保留最近一周的日志文件。这个脚本将会分割access.log和error.log文件,并保留最近7天的日志。 #!/bin/bash# Nginx日志目录 LOG_DIR"/usr/local/nginx/logs"# 日志文…

Python 爬虫项目实战(二):爬取微博热搜榜

前言 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也称为网页蜘蛛&#xff08;Web Spider&#xff09;或网页机器人&#xff08;Web Bot&#xff09;&#xff0c;是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…

【Git】.gitignore全局配置与忽略匹配规则详解

设置全局配置 1&#xff09;在C:/Users/用户名/目录下创建.gitignore文件&#xff0c;在里面添加忽略规则。 如何创建 .gitignore 文件&#xff1f; 新建一个.txt文件&#xff0c;重命名&#xff08;包括后缀.txt&#xff09;为 .gitignore 即可。 2&#xff09;将.gitignore设…

docker安装与container基本使用

安装 Homebrew 的 Cask 已经支持 Docker for Mac, mac用户狂喜 brew install --cask --appdir/Applications docker其他入门用法可参考 Docker Hello World- 菜鸟教程 或网上自行搜索博客学习。本文主要记录我运行go-zero-mall用到的一些注意点。当然&#xff0c;gonivinck项…

git rebase (--continue | --abort | --skip)

Git rebase是一个强大的命令&#xff0c;‌用于将一系列更改从一个分支转移到另一个分支上。‌在执行rebase过程中&#xff0c;‌可能会遇到冲突&#xff0c;‌此时可以使用--continue、‌--abort或--skip选项来处理。‌使用git rebase --continue可以在解决冲突后继续应用余下…