CCF NOI1139 高精度减法
问题链接: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 高精度减法相关推荐
- 高精度减法(C++实现)
高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本文中,我们默认输入的第一个数为被减数,且被减数大于减数 原理基本上与高精度加法相同,仅 ...
- 高精度减法(洛谷-P2142)
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 源代码 #inc ...
- CCF NOI1140 高精度乘法
问题链接:CCF NOI1140 高精度乘法. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 给两个正整数a和b,计算它们的积. 输入 两行,每行一个数分别表示a和b(位数达 ...
- CCF NOI1138 高精度加法
问题链接:CCF NOI1138 高精度加法. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 给两个正整数,计算它们的和. 输入 两行,每行表示一个数(位数达10000位). ...
- CCF NOI1089 高精度运算
问题链接:CCF NOI1089 高精度运算. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 输入N对位数不超过1000的正整数,求它们的和. (编程使用strunc创建 ...
- (压位)高精度乘法,高精度加法,高精度减法,高精度除法
大值 乘 大值: 题目链接:https://www.luogu.com.cn/problem/P1303 # include <iostream> # include <string ...
- 高精度算法——高精度减法
介绍: 高精度减法也同加法一样,也是用于位数太大的运算,给你一个十几位的数你可能会做直接开个long long 的数据类型就解决了,但是给你一个100位的呢,1000位的呢,开long long 也不 ...
- 高精度加法 高精度减法 高度除法 高精度乘法 方法总结
一.引言 对于数字的储存,用实数类型总会有一些不足,比如: 使用int 只能最多存储4个字节,范围也就是2的32次方: 使用double 只能最多储存8字节,就是2的64次方: 如果数字超过这个限制, ...
- C语言实现高精度减法
大一小白尝试C语言高精度减法 一.引言 笔者是一位大一学生,在做题的过程中接触到了高精度除法,而其中计算商的过程中需要用到高精度减法,因此写下这篇博客帮助理清思路.希望这篇博客能够帮助到更多刚接触C语 ...
最新文章
- SVO(SVO: fast semi-direct monocular visual odometry)
- 给实例动态增加方法VS给类动态增加方法
- 麦肯锡160页报告:2030年全球将可能有8亿人要被机器抢饭碗
- linux 设置tomcat快捷启动方式
- 计算机等级考试四级信息安全工程师
- UWB定位系统在工厂中的重要作用
- 加拿大计算机硕士留学移民,加拿大硕士留学移民深度解析,纯干货
- 阿虎烧烤的新感悟-O2O你真的会玩吗?
- 日本公司研发出一款可食用的便签纸
- MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
- C#中Get和Set的用法
- JAVA+JDBC超级详解---从连接数据库到连接池
- 去除带下划线的word文档答案
- 浙江省数字化改革总体方案(附下载)
- Oracle EBS R12 整合ADF
- 西门子 PLC S7-1500 硬件配置—PLC编程
- 微星a320m主板可以装服务器系统吗,技嘉a320m主板:微星a320m主板,正式再见
- 简单抽样技术——简单随机样本方差是总体方差的无偏估计
- 页游与端游合体 微端网游或成为行业风向标
- oracle unwrap 截断,对Oracle unwrap工具的介绍
热门文章
- cocos2d-x中使用plist文件总结
- JavaScript-bind-call-apply改变this指向
- 三容水箱液位控制系统_光电液位传感器在饮水机中的应用解决方案
- Ubuntu sublime text 3无法输入中文的解决办法
- java 字符串 查找 多个_初学者求教,如何在字符串中查找多个子字符串的位置...
- axure如何页面滑动时广告位上移_Axure案例:滑动输入,学会这一招,你就能超越80%的人...
- 剑指offer面试题32 - II. 从上到下打印二叉树 II(二叉树)(BFS)
- Jquery.ajax发送参数调用.Net Mvc子方法返回一个子页面嵌入当前页
- Inception 模型
- 一个项目如何编译多个不同签名、包名、资源等,的apk?