题目描述:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入:
-234,567,890 123,456,789
1,234 2,345,678
样例输出:
-111111101
2346912
来源:
2010年浙江大学计算机及软件工程研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7727-1-1.html
使用大数相加方法如下(本题目也可以使用简单的转化成整形数字然后相加方法,不必像大数相加这么繁琐):
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>using std::swap;
using std::max;char sa[20];
char sb[20]; char sc[20];
int a[10]; int b[10]; int c[10];int StingToInt(char a[], int b[], int& sign)
{int i;int j;if (a[0] == '-'){sign = -1;j = 0;}else{sign = 1; b[0] = a[0] - '0'; j = 1;}for (i = 1; a[i]; i++){if (a[i] != ','){b[j] = a[i] - '0';j++;}}i = 0;int k = j - 1;while (i < k){swap(b[i], b[k]);i++;k--;}return j;
}void IntToString(int a[], int length, int sign, char b[])
{int i, j;if (sign == 1) { j = 0; }else { b[0] = '-'; j = 1; }for (i = length - 1; i >= 0;i--, j++){b[j] = a[i] + '0';}b[j] = '\0';
}int
Compare(int a[], int lengthA, int b[], int lengthB)
{if (lengthA > lengthB) return 1;if (lengthA < lengthB) return -1;int i;for (i = lengthA - 1; (i >= 0) && (a[i] == b[i]); i--);if (i >= 0){if (a[i] > b[i]){return 1;}else{return -1;}}else{return 0;}
}// |a| >= |b|
int BigAdd(int a[], int lengthA, int signA, int b[], int lengthB, int signB, int c[], int M)
{bool add = (signA == signB);int length = (lengthA > lengthB) ? lengthA : lengthB;int advance = 0;int i;for (i = 0;i <= length;i++){int valueA = (i < lengthA) ? a[i] : 0;int valueB = (i < lengthB) ? (add ? b[i] : (0 - b[i])) : 0;int value = valueA + valueB + advance;if (add){if (value < M){c[i] = value;advance = 0;}else{c[i] = value - M; advance = 1;}}else{if (value >= 0){c[i] = value;advance = 0;}else{c[i] = value + M; advance = -1;}}}i--;while (i >= 0 && c[i] == 0)i--;return max(i + 1, 1);
}int main()
{while (scanf("%s%s", sa, sb) != EOF){int signA, signB, sign;int lengthA = StingToInt(sa, a, signA);int lengthB = StingToInt(sb, b, signB);int length;if (signA == signB){sign = signA;length = BigAdd(a, lengthA, signA, b, lengthB, signB, c, 10);}else{int compare = Compare(a, lengthA, b, lengthB);switch (compare){case 1:sign = signA;length = BigAdd(a, lengthA, signA, b, lengthB, signB, c, 10);break;case -1:sign = signB;length = BigAdd(b, lengthB, signB, a, lengthA, signA, c, 10);break;case 0:sign = 1;c[0] = 0;length = 1;break;}}IntToString(c, length, sign, sc);printf("%s\n", sc);}return 0;
}/**************************************************************Problem: 1003User: phoenix198425Language: C++Result: AcceptedTime:0 msMemory:1020 kb****************************************************************/

题目1003:A+B 使用大数相加方法解法相关推荐

  1. JavaScript中大数相加的解法

    一.两个大正整数字符串相加 在JavaScript中,数值类型满足不了大数据容量计算,可以用字符串进行操作 1 function add(strNum1, strNum2) { 2 // 将传进来的数 ...

  2. javascript乘法和加法_JavaScript大数相加相乘的实现方法实例

    前言 JavaScript 中的最大安全整数是 2 ^{53} – 1 ,即 9007199254740991,当我们进行超出这个范围的数值计算的时候就无法得到精确的值,而是一个近似值,比如我们计算 ...

  3. 两个函数式解决大数相加的方法

    解决大数相加的方法有很多,网上很容易搜到,下面介绍两种,一种是在网上抄的,一种是自己想的,我将他们都用函数式的方式重写了一遍. 这种是在网上抄的,的确非常简洁 function add(a,b) {l ...

  4. 大数相乘、大数相加、大数相减Java版本

    为什么80%的码农都做不了架构师?>>>    题目:两个非常大的数字相乘(相加,相减) 该题目在java中可以使用BigInteger类中的方法来实现.否则的话可以使用如下方式来实 ...

  5. hdu A + B Problem II(大数相加,数组实现)

    hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...

  6. 组成新数python_大数相加 简单实现 Python 版本

    上一次写这种类型的题目 应该还是在读书的时候啦 今天偶然同学问一段python代码是啥意思 看了看 有点长 运行一下 像是大数相加 然后突然个想法 想试下 就写了一小段代码 运行了一下发现结果一样 应 ...

  7. python进行两个大数相加

    python进行两个大数相加:由于int类型32位或64位都有长度限制,超出会内存溢出,无法计算,那么解决方法如下: 思路: 1.将超长数转换成字符串 2.进行长度补零,即让两个要计算的字符串长度一样 ...

  8. 大数系列之大数相加(ACM通过)(一)

    大数相加 概述:本题主要解决HDU 1002的大数相加问题并且成功AC 主要思路 1:定义两个字符数组和两个int型数组,输入字符串数组 2:将两个字符数组的长度用'0'补到一样长 3:倒着存入int ...

  9. 大数相加c语言思路,大数相加

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include /** * * 定义双向节点 * 数据区为一个整型数字 * **/ struct Node { int number; ...

  10. c语言大数相加怎么写,大数相加

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include /** * * 定义双向节点 * 数据区为一个整型数字 * **/ struct Node { int number; ...

最新文章

  1. linux编译mmc驱动,Embeded linux之MMC驱动
  2. p批处理替换目录下文本中的字符串
  3. 【Python】读写文件的操作
  4. mybatis if标签字符串判断
  5. 智慧工厂用到的技术_CCF VC物联网应用技术专业工作组走进苏宁物流智慧仓储工厂参观学习...
  6. 头歌(educoder)实训作业题目及答案分享 ——1-1 Java入门 - Java入门基础
  7. oracle创建PDB数据库
  8. 手机端App显示jsp页面的注意事项
  9. OSRM开源地图导航引擎介绍一
  10. CSDN的会员等级和推荐卡规则
  11. win10可以上网,但显示小地球的情况(未连接到网络)
  12. Android Qcom Display学习(一)
  13. 汇洁集团牵手阿里云,开启内衣服饰企业数字化转型
  14. 单个应用流量统计实现和核对
  15. 「脑洞」图片转HTML(支持动画)
  16. V370 Intel WiFi Link 1000 BGN驱动如何正确安装
  17. 三相桥式全控整流电路matlab仿真,三相桥式全控整流电路的matlab仿真
  18. 蓝屏代码000c2_电脑蓝屏怎么办?Win8蓝屏故障0x000000c2的解决方法
  19. c语言打地鼠窗口设计,基于单片机的打地鼠游戏设计
  20. Java安全学习笔记--一次对JNDI注入失败的问题排查(手写POC以及rmi)

热门文章

  1. 解决wordpress用户注册时,点击邮件中的重置密码链接提示“您的密码重设链接无效”
  2. 一个素数,如果将其反转后仍然是一个素数,我们称这样的素数为反转素数。 例如13是一个素数,反转之后得到的31也是一个素数,那么13和31都是反转素数。
  3. plsql登录空白框_王者荣耀空白居中以及重复名的教程[含软件]
  4. python怎么修改默认路径_Python小知识之JupyterLab默认启动路径修改
  5. 在一起计时器_拥有计时器的四个怪兽,一个从杰克身上拿的,一个差点打死赛罗...
  6. 用户与系统(unix)
  7. linux shell 学习时遇到的一些问题([: 11: y: unexpected operator)
  8. indesign打开黑屏 mac_看完这篇文章,90%的电脑黑屏问题都可以解决了!
  9. MATLAB--求解矩阵方程
  10. text无法使用空格 unity_简单的介绍几种在unity中对数据的存储和读档的方法!