高精度加法--C++
高精度加法--C++
仿照竖式加法,在第一步计算的时候将进位保留,第一步计算完再处理进位。(见代码注释)
和乘法是类似的。
#include <iostream>
#include <cstring>
#define MAXSIZE 20
#define MAXOUTSIZE MAXSIZE + 2
using namespace std;
int main()
{
char a[MAXSIZE] = {'0'},
b[MAXSIZE] = {'0'},
c[MAXOUTSIZE] = {'\0'};
int a_int[MAXSIZE] = {0},
b_int[MAXSIZE] = {0},
c_int[MAXOUTSIZE] = {0};
cin >> a;
cin >> b;
int len_a = strlen(a), len_b = strlen(b);
memset(a_int, 0, sizeof a_int);
memset(b_int, 0, sizeof b_int);
memset(c_int, 0, sizeof c_int);
//对齐
for (int i = len_a - 1, j = 0; i >= 0; i--, j++)
{
a_int[j] = a[i] - '0';
}
for (int i = len_b - 1, j = 0; i >= 0; i--, j++)
{
b_int[j] = b[i] - '0';
}
//对应位相加,但是不处理进位
for (int i = 0; i < MAXSIZE; i++)
{
c_int[i] = a_int[i] + b_int[i];
}
//处理进位
int ans_len = 0;
for (int i = 0; i < MAXOUTSIZE - 1; i++)
{
c_int[i + 1] += c_int[i] / 10;
c_int[i] %= 10;
ans_len = i;
}
while (c_int[ans_len] == 0)
{
ans_len--;
}
if (ans_len < 0)
{
cout << "0";
return 0;
}
for (int i = ans_len; i >= 0; i--)
{
c[i] = c_int[i] + '0';
}
for (int i = MAXOUTSIZE - 1; i >= 0; i--)
{
if ('\0' != c[i])
{
cout << c[i];
}
}
return 0;
}
高精度加法--C++的更多相关文章
- NEFU 2016省赛演练一 F题 (高精度加法)
Function1 Problem:F Time Limit:1000ms Memory Limit:65535K Description You know that huicpc0838 has b ...
- java算法 蓝桥杯 高精度加法
问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...
- 用c++实现高精度加法
c++实习高精度加法 最近遇到一个c++实现高精度加法的问题,高精度问题往往十复杂但发现其中的规律后发现并没有那么复杂,这里我实现了一个整数的高精度加法,主要需要注意以下几点: 1:将所需输入的数据以 ...
- 高精度加法——经典题 洛谷p1601
题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...
- hdu1002 A + B Problem II(高精度加法) 2016-05-19 12:00 106人阅读 评论(0) 收藏
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- POJ 3181 Dollar Dayz(全然背包+简单高精度加法)
POJ 3181 Dollar Dayz(全然背包+简单高精度加法) id=3181">http://poj.org/problem?id=3181 题意: 给你K种硬币,每种硬币各自 ...
- leetcode 67. Add Binary (高精度加法)
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- leetcode 66. Plus One(高精度加法)
Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...
- SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较
/*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...
随机推荐
- HTTP的cookie
HTTP cookies,通常又称作"cookies",已经存在了很长时间,但是仍旧没有被予以充分的理解.首要的问题是存在了诸多误区,认为cookies是后门程序或病毒,或压根不知 ...
- python基础学习6----字符串操作
一.重复输出字符串 print('hello'*20)#输出20个hello 二.通过索引获取字符串中字符 print('helloworld'[2:])#输出lloworld 三.关键字 in pr ...
- 极限编程核心价值:沟通(Communication)
原文:https://deviq.com/communication 极限编程核心价值:简单(Simplicity) 极限编程核心价值:沟通(Communication) 极限编程核心价值:反馈(Fe ...
- IOS和安卓不同浏览器常见bug
一.IOS自带safari浏览器 1.safari不支持fixed.input输入框 iOS下的 Fixed + Input 调用键盘的时候fixed无效问题 拖动页面时 header 和 foote ...
- toFixed四舍五入精度校正
var a = 2.255; var b = a.toFixed(2); console.log(b); 以上代码,按预期正常四舍五入得到结果应该是2.26,但实际返回值为2.25 js浮点数精度作为 ...
- <数据结构与算法分析>读书笔记--利用Java5泛型实现泛型构件
一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public ...
- OpenCV——基本图形绘制(椭圆、圆、多边形、直线、矩形)
//绘制椭圆 void DrawEllipse(Mat img, double angle) { ; ; ellipse(img, Point(WINDOW_WIDTH / , WINDOW_WIDT ...
- 关于 clock tree
1. create_clock 时,不要定义在 hierarchical pin 上,否则 cts 时会忽略这个 clock ,详见 CTS-811 Warning,解法是将其定义到实际存在的 p ...
- js基础知识整理
一.javaScript,也称之为js,是专为网页交互设计的脚本语言.主要由以下三部分组成: 1)ECMAScript 由ECMA-262定义,提供核心语言功能. 2)DOM对象(document ...
- loadrunner中pacing设置01
之前一直也用pacing值来调节TPS,一直觉得它和think time没啥区别.这次项目中,和同事就此展开了讨论,细细一研究发现pacing值门道还是很多的. 如下面三个图: 上图是pacing的三 ...