高精度减法--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'},
t[MAXSIZE] = {'0'};
int a_int[MAXSIZE] = {0},
b_int[MAXSIZE] = {0},
c_int[MAXOUTSIZE] = {0};
cin >> a;
cin >> b;
memset(a_int, 0, sizeof a_int);
memset(b_int, 0, sizeof b_int);
memset(c_int, 0, sizeof c_int);
//考虑是否交换,大数减小数
bool minus = false;
if ((strlen(a) < strlen(b)) ||
(strcmp(a, b) < 0))
{
strcpy(t, a);
strcpy(a, b);
strcpy(b, t);
minus = true;
}
if(minus)
{
cout << "-";
}
int len_a = strlen(a), len_b = strlen(b);
//对齐
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++)
{
//考虑是否借位
if (a_int[i] < b_int[i])
{
a_int[i] += 10;
a_int[i + 1]--;
}
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++的更多相关文章
- HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...
- 【洛谷P2142 高精度减法】
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 复制 2 1 输出样例#1: 复制 1 说明 ...
- 【洛谷p2142】高精度减法
高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...
- P2412高精度减法
传送门 因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下 高精度减法中,如果被减数比减数小,就要用减数减去被减数.接下来的判断就是本题的核心.直接用strcmp是不行的,例如100与 ...
- P2142 高精度减法
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...
- 洛谷 P2142 高精度减法(模板)
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...
- 洛谷P2142 高精度减法 题解
想找原题请点击这里:传送门 原题: 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) 输入输出样例 输入 复制 输出 复制 说明/提示 %数据 ...
- Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)
试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...
- P2142_高精度减法(JAVA语言)
思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...
随机推荐
- 将TXT文件 导入 sqlserver数据库
情景一: 数据库已存在旧表名 old_table,列名old_column_name. 将TXT文件导入数据库已存在旧表old_table中,导入过程中需注意 数据源中列名可全部不修改 或 全部修改 ...
- pycharm的放大和缩小字体的显示 和ubunt的截圖工具使用 ubuntu上安装qq微信等工具
https://www.cnblogs.com/sui776265233/p/9322074.html#_label0 ubuntu: 截圖工具的使用 在ubuntu 10.04 的时候,还可以很方便 ...
- python Anaconda
转载自 https://blog.csdn.net/program_developer/article/details/79677557 目录: Anaconda是什么? 如何安装? 如何管理包? ...
- Java 设计模式笔记
0. 说明 转载 & 参考大部分内容 JAVA设计模式总结之23种设计模式 1. 什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设 ...
- Hexo搭建博客笔记
Hexo搭建(建议看ppt:https://files.cnblogs.com/files/-SANG/%E4%BD%A0%E7%9A%84%E7%8C%AB.pptx ) 安装Git https:/ ...
- November 04th, 2017 Week 44th Saturday
It does not do to dwell on dreams and forget to live. 整天沉溺于梦想而忘记如何好好生活,毫无意义. Bingo, and I think it i ...
- ERC: Claim Holder #735 status:Discussion
EIP: Title: Claim Holder Author: Fabian Vogelsteller (@frozeman) Type: Standard Category: ERC Status ...
- Maven配置本地库加载ojdbc14-10.2.0.4.0.jar文件
因为ojdbc14-10.2.0.4.0.jar是要收费的,所以Maven的远程库里没有这个资源,只能通过配置本地库来加载到J2EE工程里,做法如下: 第一步:在网上下载ojdbc14.jar,然 ...
- docker镜像的创建方法docker file方式
什么是docker file文件? 简单来说,docker file文件就是一个命令文本集合,容来记录创建docker镜像的步骤 快速入门: 1.新建一个docker file文件dockerfile ...
- 如何快速找到某个研究领域的所有SCI期刊
https://www.toutiao.com/a6624332265285485060/?tt_from=dingtalk&utm_campaign=client_share&tim ...