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. 2020 CCPC Wannafly Winter Camp Day1 Div.1&amp F

    #include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...

  2. 小程序texarea 输入内容回显失败

    原因:输入框是textarea,输入的数据是含有换行符的字符串,小程序能渲染这种数据的标签有text,和textarea.(view 标签不能识别 /n 等字符) 1.使用text失败是由于不能覆盖视 ...

  3. 安装Bind到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:Bind-x 硬件要求:无 安装过程 1.配置YUM源 [root@localhost ~]# ...

  4. python scraping webs - python取得NIPS oral paper列表

    from lxml import html import requests # using xpath # page = requests.get('http://econpy.pythonanywh ...

  5. 【HTML】中国天气天气插件调用

    https://cj.weather.com.cn/ 输入上面的网址自定义即可

  6. Android开发长按菜单上下文菜单

    安卓开发中长按弹出菜单的创建方法: 1.首先给View注册上下文菜单registerForContextMenu(); 2.添加上下文菜单内容onCreateContextMenu(): ---可以通 ...

  7. Electron+React+七牛云 实战跨平台桌面应用(最新更新)

    课程资料获取链接:点击这里 前市场上对 Electron 的呼声很高,它几乎是 Web 开发人员开发桌面客户端的唯一途径,很多大厂都使用 Electron 开发自己的原生应用.Electron 天生适 ...

  8. C++-蓝桥杯-入门训练

    Fibonacci数列,快速幂 #include <cstdio> ][];}; ,MOD=; Matrix A,B,O,I; Matrix Mul(Matrix A,Matrix B){ ...

  9. SVN的使用01

    关于svn的使用以及TortoiseSVN常见操作 一.关于svn介绍 在介绍之前提一下,MyEclipse项目组的建立,以及源文件夹的创建. 新建的那一栏点击other 在搜索栏中搜索Java Wo ...

  10. ms17-010 利用msf的exp和一个扫描工具的复现

    0x01简介 永恒之蓝漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码. 攻击对象:win7及win7以下的操作系统且开启了445端口s ...