ACM 大数加法
来源:互联网 发布:优化蜜蜡对人的危害 编辑:程序博客网 时间:2024/05/16 07:53
大数加法
Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte
Total Submit:1989 Accepted:522
之后思路很清晰,可以将char型数组转换成int型数组,再循环加,只需注意进位即可。
Total Submit:1989 Accepted:522
Description
求两个非负整数(1000位以内)的和。
Input
两个非负整数(1000位以内),以空格分隔。
Output
两个非负整数的和。
Sample Input
111111111111 222222222222
Sample Output
333333333333
Hint
Source
GUOJ
分析:C++最大_int64也不够放大数的,所以肯定是用数组来进行大数运算。一开始就卡在怎么输入上了。如果输入数据一行一个,那就可以很简单的用gets()来获取字符串。然而现在是一行用空格分隔输入2个数,这种方法也不是不行,只是繁琐一些(一股脑儿冲到底吧),用gets后,判断是否为空格,不是的话就利用getchar()一个一个将字符输入到char型数组,之后再。。。
显然。略麻烦。
当然,最简单的是:
scanf("%s %s",&s1,&s2); //抓狂中!!!
之后思路很清晰,可以将char型数组转换成int型数组,再循环加,只需注意进位即可。
不过还是有一点小窍门,因为大数小于1000位,和数组(sum数组)最大位数和两个int数组一样。PS:数组用了1000方便,其实严格的话是999。如果两个数都为999位且相加最高位要进位,例如9999...+9999...,只需判断最后一次相加要不要进位,若需进位,则单独输出一个1。这样就快捷了。
结果是,偶然的写法其实大有内涵:
由于数组相加循环最大是 数组a和数组b中下标最大的,所以所有最高位要进位的话,都是要人工输出的,即如果2个大数相同个数且最高位要进位,都会主动先输出一个1。
这个小题目基本就做完了。关于数组加法还有很多写法,关键是进位carry有很多判定。
贴上很nice的代码:^_^
#include<stdio.h>#include<string.h>//大数加法 1000位以内int main(){char s1[1000]; char s2[1000]; int a[1000] = {0}; int b[1000] = {0}; int sum[1000] = {0}; // 第1000位 进位单独考虑scanf("%s %s",&s1,&s2);int lenA = strlen(s1) - 1; // 最大下标int lenB = strlen(s2) - 1;// 转换成 int , 逆序,a[0]为个位...int k = 0;for(int i=lenA;i>=0;i--){a[k] = s1[i] - '0';k++;}k = 0;for(int i=lenB;i>=0;i--){b[k] = s2[i] - '0';k++;}int carry = 0; // 进位标志for(int i=0;i<=(lenA>lenB ? lenA : lenB);i++) // 0~lenA与lenB中大的一个{int tmp1 = a[i] + b[i] +carry;sum[i] = tmp1%10;if(tmp1 >=10) carry = 1;else carry = 0;}if(carry == 1) printf("1"); // 最高位进位了 单独输出1for(int i=(lenA>lenB ? lenA : lenB);i>=0;i--)printf("%d",sum[i]);return 0;}
0 0
- ACM 大数加法
- [ACM]模拟大数加法
- 南邮ACM 1011 大数加法 JAVA解法
- ACM简单处理大数加法方法
- ACM~大数加法&&hdu题目样例
- 杭电acm-1002题-大数加法
- ACM:蓝桥杯:大数处理:高进度加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 大数加法
- 基于list内存池雏形
- 一道逻辑题 - 我拿走了哪个数
- import static和import的区别
- String 类成员函数 实现
- Linux网络编程之简单并发服务器
- ACM 大数加法
- 操作手势的实现
- 关系数据库的几种设计范式介绍
- Boost库之function的使用
- Undercomplete ICA
- LibreOffice 回归方程求法
- MySql常用命令总结
- Linux网络编程之循环服务器
- java web应用程序开发框架