大整数乘法
2013-11-12 15:01
232 查看
问题描述
求两个不超过200位的非负整数的和。
输入数据
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出要求
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能
输出为0342。
输入样例
22222222222222222222
33333333333333333333
输出样例
Output Sample:
55555555555555555555
求两个不超过200位的非负整数的和。
输入数据
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出要求
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能
输出为0342。
输入样例
22222222222222222222
33333333333333333333
输出样例
Output Sample:
55555555555555555555
# include<stdio.h> # include<string.h> int Max(int a, int b){ return (a > b ? a : b); } int main(){ char a[201]={'\0'},b[201]={'\0'}, c[202]={'\0'}, carry_bit = '0'; int n, aLen, bLen, cStart = 200; scanf("%s%s", a, b); aLen = strlen(a); bLen = strlen(b); n = Max(aLen, bLen); while(aLen > 0 || bLen > 0){ if(aLen <= 0) a[aLen-1] = '0'; if(bLen <= 0) b[bLen-1] = '0'; c[cStart] = a[aLen-1] + b[bLen-1]-'0' + carry_bit - '0'; if(c[cStart] > '9'){ carry_bit = '1'; c[cStart] = c[cStart] -10; } else carry_bit = '0'; cStart--; aLen--; bLen--; } if(carry_bit != '0') c[cStart] = '1'; else cStart++; while(c[cStart] != '\0'){ printf("%c", c[cStart]); cStart++; } return 0; }
相关文章推荐
- 百练2980 大整数乘法
- 判断整数乘法是否overflow
- [大整数乘法] java代码实现
- HDU - 1042 N! JAVA大整数乘法运算
- 大整数乘法(C语言)
- 大整数算法[09] Comba乘法(原理)
- 【分治算法】大整数乘法
- 大整数乘法(非分治算法)
- 大整数乘法算法简单实现 java
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
- AtCoder Beginner Contest 085 C Otoshidama(计算机整数乘法问题+方程求解)
- 超长整数字符串乘法的算法
- C++大整数乘法
- N的阶乘 -- (九度OJ 大整数乘法)
- 大整数乘法——分治法
- 总结:大整数类加法、乘法
- 百练_2980大整数乘法(大数相乘)
- 分治-大整数乘法
- php写的大整数的乘法
- 大整数加减乘法