https://www.acwing.com/problem/content/794/

#include<bits/stdc++.h>
using namespace std;
//判断是否有a>=b 如果是 返回true 反之 返回false
bool cmp(vector<int>&A,vector<int>&B) {
//先判断位数
if(A.size()!=B.size()) return A.size()>B.size();
//位数相同,从高位开始比较,
for(int i=A.size()-; i>=; i--)
if(A[i]!=B[i]) //如果不相等;
return A[i]>B[i]; //直接判断是都大于
return true; //如果都相等 那么a b相等 直接返回
}
// C=A-B
vector<int> sub(vector<int> &A, vector<int> &B) { //因为在下面判断过 所以A的位数大于B的位数
vector<int> C;
for(int i=,t=; i<A.size(); i++) { //t表示是否有借位
t=A[i]-t; //当前位
if(i<B.size()) t-=B[i]; //判断B有没有这一位。如果有,才会减去。如果没有 就是0 就不用减去
C.push_back((t+)%);
//如果此时t大于等于0,那么就是t本身。如果小于0,那么就返回t+10 两种情况综合,就是(t+10)%10
if(t<) t=; //如果t小于零,表示有借位
else t=;
}
//去前导0 如果只有一位,而且位0,那么就不用去掉
while(C.size()>&&C.back()==) C.pop_back();
return C;
}
int main() {
string a,b;
//如果有负数 那么就在a和b开头判断是否为-,如果为-,需要打一个标记,存一下每个数是否为负号
//两个数字相减 A-B ,如果说,有可能是正负的话 那么一定可以转换为他们的绝对值相减或者绝对值相加的情况 |A|-|B| |A|+|B|
//总之 需要分情况讨论
vector<int>A,B;
cin>>a>>b;//a=123456
for(int i=a.size()-; i>=; i--) A.push_back(a[i]-'');
for(int i=b.size()-; i>=; i--) B.push_back(b[i]-'');
if(cmp(A,B)) { //先判断谁大
auto C=sub(A,B); //如果a大 直接算 输出
for(int i=C.size()-; i>=; i--) cout<<C[i];
} else { //如果b大
auto C=sub(B,A); //颠倒一下
cout<<"-"; //输出负号
for(int i=C.size()-; i>=; i--) cout<<C[i];
}
return ;
}

AcWing 792. 高精度减法的更多相关文章

  1. HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛

    题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...

  2. 【洛谷P2142 高精度减法】

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 复制 2 1 输出样例#1: 复制 1 说明 ...

  3. 【洛谷p2142】高精度减法

    高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...

  4. P2412高精度减法

    传送门 因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下 高精度减法中,如果被减数比减数小,就要用减数减去被减数.接下来的判断就是本题的核心.直接用strcmp是不行的,例如100与 ...

  5. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...

  6. P2142 高精度减法

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  7. 洛谷 P2142 高精度减法(模板)

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  8. 洛谷P2142 高精度减法 题解

    想找原题请点击这里:传送门 原题: 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) 输入输出样例 输入 复制 输出 复制 说明/提示 %数据 ...

  9. Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)

    试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...

随机推荐

  1. sudo的简单用法

    su: Switch User, 以管理员身份运行某些命令: su -l root -c 'COMMAND' 但是想要限制某个用户只拥有一部分管理员权限,而不是拥有全部权限,这就需要用到sudo su ...

  2. Miller_Rabin()算法素数判定 +ollard_rho 算法进行质因数分解

    //****************************************************************// Miller_Rabin 算法进行素数测试//速度快,而且可以 ...

  3. Selenium实战(二)——调用JavaScript之execute_script()方法

    1.浏览器滚动条的拖动,不能依靠WebDriver提供的API来实现,用于调整浏览器滚动条位置的JavaScript代码如下: window.scrollTo(0,450); window.scrol ...

  4. 51Nod 1284 2 3 5 7的倍数 (容斥定理)

    给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 例如N = 10,只有1不是2 3 5 7的倍数. Input 输入1个数N(1 <= N <= 10^18). Outpu ...

  5. 用windows 画图 裁剪照片

    图片大小432*312 1.裁剪大小:打开画图--找到矩形选择 形状裁剪完之后,像素会有相应的变化 2.单纯调整像素:  打开画图----重新调整大小(去掉保持纵横比之后可以任意调整大小) 题目:上传 ...

  6. AcWing 7. 混合背包问题

    #include<iostream> #include<algorithm> #include<cstring> using namespace std ; ; i ...

  7. Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My

    转自:https://blog.csdn.net/haha_66666/article/details/78444457 Query : select * from order LIMIT 0, 10 ...

  8. 查看Sql Server库中某张表的结构

    --快速查看表结构(比较全面的) SELECT CASE WHEN col.colorder = THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 ...

  9. 转载:arm neon intrinsic

    转自:https://blog.csdn.net/hemmingway/article/details/44828303/ https://blog.csdn.net/chshplp_liaoping ...

  10. Linux - pip 安装使用说明

    简介 pip类似RedHat里面的yum,安装Python包非常方便.本节详细介绍pip的安装.以及使用方法 方案一 wget https://bootstrap.pypa.io/get-pip.py ...