【信息学奥赛一本通 C++题解】1169:大整数减法

信息学奥赛一本通(C++版)在线评测系统
1169:大整数减法


同学们,今天我们要学习的内容是大整数减法,这可是个很厉害的本领哦!就像我们之前做减法一样,只不过今天的数字超级大,普通的方法可算不出来呢。别担心,跟着老师一步一步来,大家肯定都能学会!

一、解题思路

同学们,我们平常做减法,比如5 - 3,是不是一下子就能算出答案啦?但今天要做的大整数减法,数字特别大,没办法直接算出来。这时候,我们可以像平时写减法竖式那样来解决它。把两个大整数像排队一样,个位和个位对齐,十位和十位对齐,百位和百位对齐……一直到最后一位都对齐。然后从最右边的个位开始减起,如果个位上的数字不够减,就像以前学的那样,向十位借1,这个借的1呀,到了个位就变成10啦,加上原来个位的数字再去减。按照这样的方法,从个位开始,一位一位地减,最后就能得到两个大整数相减的结果啦。

二、解题步骤

  1. 输入数字:我们要先把题目里的两个大整数找出来,就像找到两个要比赛的队伍一样。然后,把它们输入到我们的“数学小助手”(电脑程序)里。
  2. 数位对齐并补0:看看这两个大整数的位数是不是一样多。如果不一样多,位数少的那个大整数前面要补0,一直补到和位数多的大整数位数一样。比如说,一个大整数是123,另一个是45,那45前面就要补一个0,变成045,这样它们就都是三位数啦,就对齐啦。
  3. 从个位减起:现在两个队伍站整齐啦,我们从最后一个小朋友(个位)开始减。看看前面队伍个位的小朋友数量减去后面队伍个位的小朋友数量够不够减。要是够减,就直接相减;要是不够减,就从前面一位借1个小朋友(借1当10),加上原来个位的小朋友数量再减。
  4. 依次计算其他数位:算完个位,接着算十位。计算十位的时候方法和个位一样哦,如果不够减还是要借位。然后是百位、千位……一直这样算到最高位。
  5. 去除前导0:算完之后,结果的最前面可能会有一些0,这些0就像多余的“小尾巴”,我们要把它们去掉,只留下有用的数字。比如说结果是00123,我们就把前面两个0去掉,变成123。
  6. 得出结果:把去掉前导0后的数字写出来,这就是两个大整数相减的结果啦。

三、C++代码实现

#include<bits/stdc++.h>
using namespace std;

int main()
{
   
   
	string a, b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信奥大黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值