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

高精度减法

时间:2024-10-24 22:10:40浏览次数:1  
标签:return 高精度 int back -- push 减法 size

#include <bits/stdc++.h>
using namespace std;
string a,b;
bool f(){
    if(a.size()>b.size()){
        return true;
    }else{
        for(int i = 0;i<a.size();i++){
            if(b[i]>a[i]){
                return false;
            }
        }
    }
    return true;
}
int main() {
    cin>>a>>b;
    if(!f()){
        string a1 = a;
        a = b;
        b = a1;
        cout<<"-";
    }
    vector<int> x,y,sum;
    for(int i = a.size()-1;i>=0;i--){
        x.push_back(a[i]-'0');
    }
    for(int i = b.size()-1;i>=0;i--){
        y.push_back(b[i]-'0');
    }
    for(int i = 0;i<a.size();i++){
        if(i>=y.size()){
            y.push_back(0);
        }
        if(x[i]<y[i]){
            x[i] += 10;
            x[i+1] -= 1;
        }
        sum.push_back(x[i]-y[i]);
    }
    bool have = true;
    for(int i = sum.size()-1;i>=0;i--){
        if(sum[i]==0 && have && i>=1){
            continue;
        }
        have = false;
        cout<<sum[i];
    }
    return 0;
}#include <bits/stdc++.h>
using namespace std;
string a,b;
bool f(){
    if(a.size()>b.size()){
        return true;
    }else{
        for(int i = 0;i<a.size();i++){
            if(b[i]>a[i]){
                return false;
            }
        }
    }
    return true;
}
int main() {
    cin>>a>>b;
    if(!f()){
        string a1 = a;
        a = b;
        b = a1;
        cout<<"-";
    }
    vector<int> x,y,sum;
    for(int i = a.size()-1;i>=0;i--){
        x.push_back(a[i]-'0');
    }
    for(int i = b.size()-1;i>=0;i--){
        y.push_back(b[i]-'0');
    }
    for(int i = 0;i<a.size();i++){
        if(i>=y.size()){
            y.push_back(0);
        }
        if(x[i]<y[i]){
            x[i] += 10;
            x[i+1] -= 1;
        }
        sum.push_back(x[i]-y[i]);
    }
    bool have = true;
    for(int i = sum.size()-1;i>=0;i--){
        if(sum[i]==0 && have && i>=1){
            continue;
        }
        have = false;
        cout<<sum[i];
    }
    return 0;
}

 

标签:return,高精度,int,back,--,push,减法,size
From: https://www.cnblogs.com/wangyihang-xh/p/18501440

相关文章

  • 柔性线路板标签高精度贴合应用
    FPC柔性线路板的贴标是电子制造领域中的一项关键工艺,尤其在当前产品小型化、轻薄化趋势中显得尤为重要。贴标机在这一过程中面对柔性电路的特殊性,也会面临诸多挑战。FPC柔性线路板以其卓越的柔韧性、轻量化和高集成度成为众多消费电子产品的首选材料。但同时,也因为其柔软易变......
  • 高精度乘法C++
    1.高精度乘高精度的简单算法思想:倒置相乘,统一处理进位,还原。复杂度:$o(n^2)$//BySnowDream#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+10;strings1,s2;intn1[N],n2[N],n3[N];//n1储存被乘数,n2储存乘数,n3储存积voidmul(){......
  • 高精度加法
    #include<iostream>#include<vector>usingnamespacestd;vector<int>add(stringa,stringb){vector<int>a1,b1;for(intj=a.length()-1;j>=0;j--)a1.push_back(a[j]-'0');for(intj=......
  • 高精度计算库math.js使用踩坑记
    前情最近在做一个后端需求,需求中需要前端做一些金额数字计算,前端对于小数的计算一直都有精度问题,如0.1+0.2计算的结果并不是0.3,而是0.30000000000000004,于是引入高精度计算库math.js来解决前端计算的精度问题。坑位这次做的需求是一个退货扣款的需求,如果用户退回来的商品有磨......
  • 基于YOLOv8的高精度火车轨道路障检测算法源码源码 + 数据集,数据集共2053张图片,有5个类
     基于YOLOv8的高精度火车轨道路障检测算法源码源码+数据集,数据集共2053张图片,有5个类别,分别是preson、obstic_oc、animal、vehicle、motor_bicycle实时检测:采用YOLOv8m算法,轻量级架构,可以实时识别轨道上的障碍物。高精度识别:精准识别多种路障,包括人、动物、车辆、摩托车。......
  • Python TypeError: list和list之间不支持减法操作
    在本文中,我们将介绍Python中的TypeError错误,特别是在进行列表相减时出现的TypeError:unsupportedoperandtype(s)for-:‘list’and‘list’错误。我们将深入探讨这个错误的原因,并提供一些解决这个错误的方法。 了解TypeError错误TypeError是Python中常见的错误类型之一......
  • SLM883x系列SLM8834两个零漂移可设置和稳定TEC温度 超紧凑高效率高精度TEC控制器
    SLM883x系列SLM8834是集成了双路功率调节器的单片TEC控制器。内部带有一个线性功率级、一个脉宽调制(PWM)功率级和两个零漂移、轨对轨运算放大器。线性功率级与PWM功率级同时工作,以控制H桥配置中的内部功率级的双向输出。通过测量热传感器反馈电压并使用集成运算放大器作为PID环......
  • 基于STM32的高精度数字测量仪设计
    引言本项目设计了一个基于STM32的高精度数字测量仪,能够精确测量电压、电流、温度以及其他环境参数。通过采用高分辨率的ADC(模数转换器)和温度传感器等外设,该系统可以实时获取精确的数据,广泛应用于实验室测量、工业监控以及精密电子设备的调试。用户通过OLED显示屏查看测量结......
  • 高精度减法笔记
    高精度减法vector<int>u,v;boolcmp(vector<int>&u,vector<int>&v){//比较两个数大小 if(u.size()!=v.size())//前数不等于后数 returnu.size()>v.size();//返回前数是否大于后数,是=ture,否=false elsefor(inti=u.size()-1;i>=0;i--)//前数等于后数,遍......
  • 高精度加法笔记
    vector<int>u;//储存a倒序的每个数vector<int>v;//储存b倒序的每个数vector<int>add(vector<int>m,vector<int>n){//高精度加法 vector<int>temp;//temp数组存储相加后的每个数 intt=0;//t作为每个数相加的和 for(inti=0;i<m.size()||i<n.size();......