问题链接:CCF NOI1139 高精度减法



时间限制: 1000 ms  空间限制: 262144 KB

题目描述

给两个正整数a和b,计算它们的差。题目保证a>=b

输入

两行每行一个数,分别表示a和b(位数达10000位)。

输出

输出它们的差。

样例输入

2
1
样例输出

1

数据范围限制

位数达10000位

提示



问题分析

这是一个减法计算问题,但是位数多,可能达到10000位,超出了所有整数类型能够表示的范围。

大数计算一种是构建一个大数类进行计算,另外一种是直接计算。

人们使用阿拉伯数字,据说是印度人发明的。需要注意的一点是,阿拉伯数字的高位在左边,阅读上是从左到右,而计算上人们则是从低位算起。

大数可以放在数组中,为了计算上的方便,应该把低位放在下标小的地方,高位放在下标大的地方。

读入的数可以放在字符数组或字符串变量中,高位在左低位在右。

减法计算需要考虑借位问题,相减后位数可能减少。

因为a>=b,所以不用考虑相减后的符号问题。

程序说明

程序采用直接模拟计算。

要点详解

  • 使用宏定义可以使得代码可阅读性增强。
  • 加法计算需要考虑进位,实际上每一位的加法是三个数相加。

参考链接:(略)。


100分通过的C语言程序:

#include <stdio.h>
#include <string.h>#define BASE 10
#define N 10000char a[N+1], b[N+1];
char ans[N+1];int main(void)
{int anslen, carry, len, i, j;scanf("%s", a);scanf("%s", b);memset(ans, 0, sizeof(ans));anslen = len = strlen(a);for(i=len-1, j=0; i>=0; i--)ans[j++] = a[i] - '0';len = strlen(b);if(len > anslen)anslen = len;carry = 0;for(i=len-1, j=0; i>=0; i--,j++) {ans[j] -= b[i] - '0' + carry;if(ans[j] < 0) {carry = 1;ans[j] += BASE;} elsecarry = 0;}while(carry > 0) {ans[j] -= carry;if(ans[j] < 0) {carry = 1;ans[j] += BASE;} elsecarry = 0;j++;}if(ans[anslen - 1] == 0)anslen--;for(i=anslen-1; i>=0; i--)printf("%d", ans[i]);printf("\n");return 0;
}

CCF NOI1139 高精度减法相关推荐

  1. 高精度减法(C++实现)

    高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本文中,我们默认输入的第一个数为被减数,且被减数大于减数 原理基本上与高精度加法相同,仅 ...

  2. 高精度减法(洛谷-P2142)

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 源代码 #inc ...

  3. CCF NOI1140 高精度乘法

    问题链接:CCF NOI1140 高精度乘法. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 给两个正整数a和b,计算它们的积. 输入 两行,每行一个数分别表示a和b(位数达 ...

  4. CCF NOI1138 高精度加法

    问题链接:CCF NOI1138 高精度加法. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 给两个正整数,计算它们的和. 输入 两行,每行表示一个数(位数达10000位). ...

  5. CCF NOI1089 高精度运算

    问题链接:CCF NOI1089 高精度运算. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 输入N对位数不超过1000的正整数,求它们的和.   (编程使用strunc创建 ...

  6. (压位)高精度乘法,高精度加法,高精度减法,高精度除法

    大值 乘 大值: 题目链接:https://www.luogu.com.cn/problem/P1303 # include <iostream> # include <string ...

  7. 高精度算法——高精度减法

    介绍: 高精度减法也同加法一样,也是用于位数太大的运算,给你一个十几位的数你可能会做直接开个long long 的数据类型就解决了,但是给你一个100位的呢,1000位的呢,开long long 也不 ...

  8. 高精度加法 高精度减法 高度除法 高精度乘法 方法总结

    一.引言 对于数字的储存,用实数类型总会有一些不足,比如: 使用int 只能最多存储4个字节,范围也就是2的32次方: 使用double 只能最多储存8字节,就是2的64次方: 如果数字超过这个限制, ...

  9. C语言实现高精度减法

    大一小白尝试C语言高精度减法 一.引言 笔者是一位大一学生,在做题的过程中接触到了高精度除法,而其中计算商的过程中需要用到高精度减法,因此写下这篇博客帮助理清思路.希望这篇博客能够帮助到更多刚接触C语 ...

最新文章

  1. SVO(SVO: fast semi-direct monocular visual odometry)
  2. 给实例动态增加方法VS给类动态增加方法
  3. 麦肯锡160页报告:2030年全球将可能有8亿人要被机器抢饭碗
  4. linux 设置tomcat快捷启动方式
  5. 计算机等级考试四级信息安全工程师
  6. UWB定位系统在工厂中的重要作用
  7. 加拿大计算机硕士留学移民,加拿大硕士留学移民深度解析,纯干货
  8. 阿虎烧烤的新感悟-O2O你真的会玩吗?
  9. 日本公司研发出一款可食用的便签纸
  10. MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
  11. C#中Get和Set的用法
  12. JAVA+JDBC超级详解---从连接数据库到连接池
  13. 去除带下划线的word文档答案
  14. 浙江省数字化改革总体方案(附下载)
  15. Oracle EBS R12 整合ADF
  16. 西门子 PLC S7-1500 硬件配置—PLC编程
  17. 微星a320m主板可以装服务器系统吗,技嘉a320m主板:微星a320m主板,正式再见
  18. 简单抽样技术——简单随机样本方差是总体方差的无偏估计
  19. 页游与端游合体 微端网游或成为行业风向标
  20. oracle unwrap 截断,对Oracle unwrap工具的介绍

热门文章

  1. cocos2d-x中使用plist文件总结
  2. JavaScript-bind-call-apply改变this指向
  3. 三容水箱液位控制系统_光电液位传感器在饮水机中的应用解决方案
  4. Ubuntu sublime text 3无法输入中文的解决办法
  5. java 字符串 查找 多个_初学者求教,如何在字符串中查找多个子字符串的位置...
  6. axure如何页面滑动时广告位上移_Axure案例:滑动输入,学会这一招,你就能超越80%的人...
  7. 剑指offer面试题32 - II. 从上到下打印二叉树 II(二叉树)(BFS)
  8. Jquery.ajax发送参数调用.Net Mvc子方法返回一个子页面嵌入当前页
  9. Inception 模型
  10. 一个项目如何编译多个不同签名、包名、资源等,的apk?