高精度之加法

题目描述 Description

给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。

输入描述 Input Description

读入两个用空格隔开的正整数

输出描述 Output Description

输出A+B的值

样例输入 Sample Input

3 12

样例输出 Sample Output

15

数据范围及提示 Data Size & Hint

两个正整数的位数不超过500位

思路简单

#include<stdio.h>
#include<string.h>
int main(){
	char a[505], b[505],c[505],d[505];
	int sum[505];
	memset(sum, 0, sizeof(sum));
	/*gets_s(c);
	gets_s(d);*/
	scanf("%s%s", c, d);
	int i, j, tmp, t = 0;
	for (i = strlen(c) - 1, j = 0; i >= 0; i--, j++)
		a[j] = c[i];
	a[j] = '\0';
	for (i = strlen(d) - 1, j = 0; i >= 0; i--, j++)
		b[j] = d[i];
	b[j] = '\0';
	for (i = 0; a[i] != '\0'&&b[i] != '\0'; i++){
		tmp = a[i] - '0' + b[i] - '0' + t;
		t = tmp / 10;
		sum[i] = tmp % 10;
	}
	while (a[i] != 0){
		tmp = a[i] - '0' + t;
		t = tmp / 10;
		sum[i++] = tmp % 10;
	}
	while (b[i] != 0){
		tmp = b[i] - '0' + t;
		t = tmp / 10;
		sum[i++] = tmp % 10;
	}
	for (i = 501; sum[i] == 0; i--);

	while (i >= 0)
		printf("%d", sum[i--]);
	puts("");
	return 0;
}
时间: 2024-10-10 10:29:17

高精度之加法的相关文章

【高精度】加法天才

问题 A: [高精度]加法天才 时间限制: 1 Sec  内存限制: 64 MB提交: 14  解决: 10[提交] [状态] [讨论版] [命题人:] 题目描述 贝贝是一个聪明的小孩,他总喜欢玩数字加法的游戏.一天,他的数学老师为了考一考他的能力,出了一道这样的题:要求他在短时间内计算出两个大数相加的结果.这两个大数可不是普通的数字,它们是11位以上的"庞然大物". 请你编程序,帮贝贝解决这个问题. 输入 两行,分别是两个需要相加的数A和B,这两个数在10^11-10^100之间.

高精度计算(二) /*高精度的加法运算*/

例 高精度加法运算 输入正整数 a 和 b,输出 a+b 的值.0<a,b<=10^250 输入: 第一行:a 第二行:b   输出:a+b 的和. 样例输入: 99    999 样例输出: 1098 分析: (1)加法运算      -- a[7]  a[6]  a[5]  a[4]  a[3]  a[2]  a[1] -+-   0      0    b[5]  b[4]  b[3]  b[2]  b[1] ----------------------------------    

FZU 2032 高精度小数加法

题目描写很没意思..就是说给出n个小数 求它们的总和 因为给出的小数点后最多16位而要求保存至12位 而能直接使用的最精确的double只能到12位 于是13的进位可能被忽略 于是不可以用double 于是它就是一个很裸的小数高精度加法..还只是加法.. 在比赛的时候学长很快就敲出来了代码并且AC 但是被别人极多提交的极短且超时代码唬住(猜测应该是直接相加) 以为直接相加的O(N)的复杂度尚且不可..所以甚至连试做都没有 赛后写出代码F9直接运行 但是小数上的进位转到整数上遗漏 更改后AC #i

整数高精度运算——加法

高精度运算是信息学的一种重要算法.这种算法使用多个存储单位进行计算,因此它的计算范围超过一般使用一个存储单位的算法.也是一些信息学竞赛的常考题目. 高精度运算主要有以下几个步骤: 1.读取字符串,转换成数字倒序存储到整数数组中: 2.运算,注意进位和借位: 3.倒序输出整数数组,加法注意最高位进位,减法注意高位中的无用的0不要输出: 高精度加法代码: #include<stdio.h>#include<string.h>char s[1000];       //数组比较大时,应作

无线OSS-高精度整数加法

#include<iostream> #include<string> using namespace std; int compareStr(string str1, string str2) { int num1 = str1.length(); int num2 = str2.length(); if(num1>num2) return 1; if(num1<num2) return -1; if(num1==num2) { for(int i=0; i<n

高精度小数加法

例题链接:hdu1753   http://acm.hdu.edu.cn/showproblem.php?pid=1753 代码: #include<stdio.h> #include<string.h> #include<iostream> using namespace std; const int maxn = 500; char a[maxn]; char b[maxn]; int aa1[maxn]; int aa2[maxn]; int bb1[maxn];

noi1_13_48[实数加法]

高精度小数加法……一开始对齐弄了半天,teacher却告诉我可以固定小数点在数组的100号…… uses math;type arr=array[-1..200] of longint;var a,b,c:arr;procedure putin(var a:arr);var k,i:longint; s:string;begin fillchar(a,sizeof(a),0); readln(s); k:=pos('.',s); a[0]:=102-k; a[-1]:=length(s)-k+1

c++ 高精度算法

包括: 两个高精度正整数加法 两个高精度正整数乘法 两个高精度正整数减法 两个高精度正整数除法 两个高精度正整数求余 两个高精度正整数数求最大公约数 两个高精度正整数数求最小公倍数 1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 //清除前缀0,如果结果是空字符串则设为0 7 inline void clear(string& a){ 8 while(a.length()>0

hdu 1316 How many Fibs?(高精度斐波那契数)

//  大数继续 Problem Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n >= 3) Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b]. Input The input contains several test cas