首页 > 其他分享 >高精度减法

高精度减法

时间:2022-11-30 20:57:36浏览次数:50  
标签:return 高精度 int back -- push 减法 size

给定两个正整数,计算它们的差。

#include <iostream>
#include <vector>
using namespace std;
vector<int> a, b, c;

bool cmp () {
    if (a.size() != b.size()) return a.size() > b.size();
    for (int i = a.size() - 1; i >= 0; i--) {
        if (a[i] == b[i]) continue;
        return a[i] > b[i];
    }
    return true;
}

void sub (vector<int>& a, vector<int>& b) {
    for (int i = 0, t = 0; i < a.size(); i++) {
        t = a[i] - t;
        if (i < b.size()) t -= b[i];
        
        if (t >= 0) {
            c.push_back(t);
            t = 0;
        }
        else {
            t += 10;
            c.push_back(t);
            t = 1;
        }
    }
    
    while (c.size() > 1 && c.back() == 0) c.pop_back();
}

int main() {
    string x, y;
    cin >> x >> y;
    
    for (int i = x.size() - 1; i >= 0; i--) a.push_back(x[i] - '0');
    for (int i = y.size() - 1; i >= 0; i--) b.push_back(y[i] - '0');
    
    if (cmp()) sub(a, b);
    else {
        cout << "-";
        sub(b, a);
    }
    
    for (int i = c.size() - 1; i >= 0; i--) cout << c[i];
    return 0;
}

  

标签:return,高精度,int,back,--,push,减法,size
From: https://www.cnblogs.com/leetothemoon/p/16939689.html

相关文章

  • 高精度乘法
    给定两个非负整数,请你计算它们的值。#include<iostream>#include<vector>usingnamespacestd;vector<int>a,b,c;voidmul(){intm=a.size(),n=b.......
  • 二进制数的高精度运算
        我们知道,一个int型整数一般用32位二进制数存储,所表示的最大整数值为231-1,对应1个10位的十进制整数。因此,一个更大的整数可能需要更多的二进制位来存储,在处理......
  • 高精度减法
    高精度减法模板https://www.acwing.com/problem/content/794/减法注意要点:对于t=A[i]-B[i]-t;可以拆为t=A[i]-t如果B[i]合法,再t-=B[i]这么两步来做相减......
  • 高精度乘法模板(大*大)
    高精度乘法模板(大*大)#include<bits/stdc++.h>usingnamespacestd;vector<int>mul(vector<int>&A,vector<int>&B){ vector<int>C(A.size()+B.size()+7,......
  • 高精度加法
    高精度加法模板高精度加法模板#include<bits/stdc++.h>usingnamespacestd;vector<int>add(vector<int>&A,vector<int>&B){ if(A.size()<B.size())return......
  • 高精度板子
     #include<bits/stdc++.h>usingnamespacestd;intcompare(stringstr1,stringstr2){if(str1.length()>str2.length())return1;elseif(str1.length(......
  • [AcWing 792]高精度减法
    点击查看代码#include<iostream>#include<vector>usingnamespacestd;//判断A>=B返回trueA<B返回falseboolcmp(vector<int>A,vector<int>B){//当A的......
  • C语言:大数减法
    题目输入两个正整数(20位以上),计算两个数的差 例如:  输入:5626255555855853666554212125121252222521  输出:2050430437306314144代码#include<stdio.h>#inclu......
  • 压位高精度模板
    压位高精全家桶。原代码来自于知乎上人形魔芋的压位高精模板,进行了一些修改和改进。namespaceBigInteger{typedeflonglongll;typedefunsignedlonglong......
  • 一个很好用的 C++ 高精度整数板子
    点击查看代码typedeflonglongll;typedeflongdoubleld;typedefcomplex<ld>pt;constintMOD=1e9+7;constldPI=acos(-1.L);template<classT>struc......