问题链接:CCF NOI1138 高精度加法



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

题目描述

给两个正整数,计算它们的和。

输入

两行,每行表示一个数(位数达10000位)。

输出

输出它们的和。

样例输入

1
2
样例输出

3

数据范围限制

位数达10000位

提示



问题分析

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

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

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

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

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

程序说明

程序采用直接模拟计算。

要点详解

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

参考链接:(略)。


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;carry = ans[j] / BASE;ans[j] %= BASE;}while(carry > 0) {ans[j] += carry;carry = ans[j] / BASE;ans[j++] %= BASE;}if(j > anslen)anslen = j;for(i=anslen-1; i>=0; i--)printf("%d", ans[i]);printf("\n");return 0;
}

CCF NOI1138 高精度加法相关推荐

  1. CCF NOI1139 高精度减法

    问题链接:CCF NOI1139 高精度减法. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 给两个正整数a和b,计算它们的差.题目保证a>=b 输入 两行每行一个数, ...

  2. CCF NOI1089 高精度运算

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

  3. 基础练习 高精度加法

    基础练习 高精度加法 时间限制:1.0s 内存限制:512.0MB 问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标 ...

  4. 用C++的类重载高精度加法,乘法和等于符号

    运行结果: 代码如下: #include<iostream> #include<algorithm> #include<string.h> #include< ...

  5. PAT甲级1024 Palindromic Number:[C++题解]回文串和高精度加法

    文章目录 题目分析 题目链接 题目分析 一个判断是否是回文数的函数:check,思路是使用双指针从两端分别往里走. 另一个是高精度加法函数add,传入两个vector. 另外,vector逆序构造可以 ...

  6. PAT甲级1023 Have Fun with Numbers:[C++题解]高精度加法和两个vector大小比较

    文章目录 题目分析 题目链接 题目分析 使用高精度加法高精度加法板子求 这个数的两倍,存在一个vector中. 所谓高精度就是使用string来存大的数,然后模拟列竖式加法,结果一位一位压入数组vec ...

  7. 高精度加法(C++实现)

    高精度加法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式加法计算 步骤 以下有顺序之分 数组清零 输入 获取长度 逆置 字符型数字转成对应的整型数字 计算并输出 ...

  8. 《信息学奥赛一本通》 高精度加法。输入两个正整数,求它们的和。

    高精度加法.输入两个正整数,求它们的和. 算法分析 升级版代码 算法分析 输入两个数到两个变量中,然后用赋值语句求它们的和,输出.但是,我们知道,在C++语言中任何数据类型都有一定的表示范围.当两个被 ...

  9. 高精度加法(非负)和大数阶乘及和汽水问题

    高精度加法(非负)和大数阶乘 文章目录 高精度加法(非负)和大数阶乘 一.问题描述 二.代码 三.问题描述 四.代码 五.问题描述 六.代码 一.问题描述 二.代码 #define _CRT_SECU ...

最新文章

  1. JDBC常见面试题集锦(二)
  2. NSArray和NSMutableArray
  3. CS起源pointermap找基址+工具函数测试
  4. Buffer Pool--内存总结1
  5. IIS 7.5 Express概况
  6. HDU - 4608 I-number
  7. Gartner 发布2019年超融合魔力象限:新增深信服一员!
  8. dbml mysql_MySQL数据库笔记二:数据类型及数据库操作
  9. 再谈注意力机制 | 运用强化学习实现目标特征提取
  10. php时间序列比对,常用在线序列比对工具
  11. VRAR应该是工具,而不是“玩具”
  12. aspx 请求不到后端_2021了你该知道的6个Node.js后端框架
  13. 使用Animation编辑器编辑动画
  14. 社交APP软件开发流程解析
  15. 联合作战效能评估软件
  16. android x5 webview 第一次,android studio中配置X5 webview时的一个坑
  17. 《动手学深度学习》网页版
  18. 小程序开发有哪些方式?
  19. Windows 10如何找回显示桌面图标,一键快速回到桌面
  20. 谈谈Java对象的生命周期

热门文章

  1. 从SDE库文件手工删除SDE图层(转载)
  2. 微服务注册中心为什么要使用Consul替代Eureka?
  3. 无缝世界网游服务器架构的设计思路
  4. matlab 连通域数量,【Matlab】找到矩阵中每个连通域的最小值
  5. r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...
  6. 计算走线长度_高速走线长度的一些思考
  7. 配置ssd为缓存_SSD小讲堂丨新电脑剪视频还卡?原因给你们找到了!
  8. LCP 13. 寻宝
  9. 关于RecyclerView(二)设置EmptyView
  10. linux 怎么往内核加驱动,向Linux内核添加驱动