[HDOJ] 1753.大明A+B (大数加法)

2023-10-20 19:08
文章标签 大数 加法 hdoj 大明 1753

本文主要是介绍[HDOJ] 1753.大明A+B (大数加法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem Description

话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

Input

本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

Output

请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

Sample Input

1.1 2.9
1.1111111111 2.3444323343
1 1.1

Sample Output

4
3.4555434454
2.1

题意:大数相加
思路:获取小数位置,对齐小数点,两边补零,记录小数点位置,去掉小数点,相加,输出时输出小数点。

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>using namespace std;int FindDec(string &str) {int i;int len = str.size();for (i = 1; i < len; i++) {if (str[i] == '.') break;}return i;
}int main() {string a, b;while (cin >> a >> b) {//整数位位数int len_int_a = FindDec(a), len_int_b = FindDec(b);//小数位位数int len_dec_a = a.size() - len_int_a - 1;int len_dec_b = b.size() - len_int_b - 1;//整书补零if (len_int_a > len_int_b)for (int i = 0; i < len_int_a - len_int_b; ++i) b = '0' + b;elsefor (int i = 0; i < len_int_b - len_int_a; ++i) a = '0' + a;//小数补0if (len_dec_a > len_dec_b)for (int i = 0; i < len_dec_a - len_dec_b; ++i) b = b + '0';elsefor (int i = 0; i < len_dec_b - len_dec_a; ++i) a = a + '0';//记录小数点位置,去除小数点int decPos = max(len_int_a, len_int_b);a = a.erase(decPos, 1);b = b.erase(decPos, 1);//计算int car = 0;int len = a.size();for (int i = len - 1; i >= 0; --i) {int x = a[i] - '0', y = b[i] - '0';car += (x + y);a[i] = (car % 10 + '0');car /= 10;}if (car) {a = '1' + a;len = a.size();decPos += 1;}//输出int i, j;for (i = 0; i < len; i++)if (a[i] != '0') break;for (j = i; j < decPos; j++) cout << a[j];for (j = len - 1; j >= decPos; j--)if (a[j] != '0') break;if (j >= decPos) {cout << ".";for (i = decPos; i <= j; i++) cout << a[i];}cout << endl;}system("pause");return 0;
}

这篇关于[HDOJ] 1753.大明A+B (大数加法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249127

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

高精度加法,乘法,阶乘

#include <iostream>#include <map>#include <string>#include <algorithm>using namespace std;const int Max = 50000;string str1,str2;/***********乘法***********/void chenfa(){cin >> str1>>str2;int a

找第K大数(ACdream 1099)

瑶瑶的第K大 Time Limit: 4000/2000MS (Java/Others)  Memory Limit: 256000/128000KB (Java/Others) Submit  Statistic  Next Problem Problem Description 一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

【PyTorch常用库函数】torch.add():张量的加法操作

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一 、torch.add()函数的基本用法二、示例演示示例1:两个相同形状的一维张量相加示例2:两个不同形状的一维张量相加(错误示例)示例3:使用alpha参数进行加权加法 结尾 前言 PyTorch作为一

SDUT2876_走楼梯(大数)

走楼梯 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小虎发现走楼梯的时候一次上一个台阶比较惬意,一次上两个台阶比较高效,一次上三个台阶就很累人。 小虎是一个即注重质量又注重高效的人,于是他就在上楼梯的时候每步就只跨上一个台阶或两个台阶, 现在小虎想知道他这样上n阶的楼梯一共有多少种走法,但

【高精度】-DLUTOJ-1176-大数乘法

题目链接:http://acm.dlut.edu.cn/problem.php?id=1176 题目描述:赤裸的大数乘法 解题思路: 突然想到自己没写过高精度乘法,就回咱们自己OJ上找出了这道题,赤裸的高精度乘法而已,没想到依然觉得不好写,准确说来是我从小到大算乘法的习惯使我产生了错觉:“ 想写大数乘法就得先写一个大数加法出来 ”。喂!我短路了半天才想明白,int 数组里可以存个两位数啊,再

图像的加法 | 05

大于255的直接取255。 code: import cv2 as cvimport matplotlib.pyplot as plt​rain = cv.imread("../Dataset/TrainValDataset/Image/camourflage_00007.jpg")plt.imshow(rain[:,:,::-1])plt.show()​view =