标题:超长正整数相减,求解求代码
只看楼主
computerlong
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
结帖率:0
已结贴  问题点数:20 回复次数:4 
超长正整数相减,求解求代码
【问题描述】
编写程序实现两个超长正整数(每个最长80位数字)的减法运算。
 
【输入形式】

从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。
1. 第一行是超长正整数A;
2. 第二行是超长正整数B;
 
【输出形式】
输出只有一行,是长整数A减去长整数B的运算结果,从高到低依次输出各位数字。要求:若结果为0,则只输出一个0;否则输出的结果的最高位不能为0,并且各位数字紧密输出。
 【输入样例】
 
234098
134098703578230056
 
【输出样例】
 -134098703577995958

搜索更多相关主题的帖子: 编写程序 正整数 键盘 
2017-04-23 19:38
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:10 
存储数字用字符串。

模仿小学做竖式计算的方法,从低位到高位逐个计算,不够的从高位借一就好了。



φ(゜▽゜*)♪
2017-04-23 20:16
computerlong
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
得分:0 
麻烦写一下代码吧,时间紧,没时间想了
2017-04-23 20:24
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 
回复 3楼 computerlong
这么懒得事情交给百度不就好了。。。

φ(゜▽゜*)♪
2017-04-23 20:45
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:10 
可参考二进制减法算法,也采用补码算法变成大数加法,如此一来无论加法还是减法,都可以用加法。举例如下:
5-125--->首先位数对齐005-125--->计算-125补码:125每位用9减结果为874,然后用大数加法对874+1=875--->005+875=880,判断结果位数是否有进位,有进位则舍去进位,剩下的位数就是结果,如果没有进位,则还需要对结果做一次补码运算--->999-880=119然后用大数加法对119+1=120,由于做了补码运算,结果前面加负号即-120就是结果了。
说明:做补码运算是每位用9减结果加一,就相当于二进制补码“取反加一”运算,每位用9减可以直接使用c算术运算。
2017-04-23 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476370-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064735 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved