首页 > 其他分享 >高精度

高精度

时间:2023-02-26 20:57:12浏览次数:30  
标签:高精度 int back -- vector include size

高精度

加法

#include <bits/stdc++.h>

using namespace std;

vector<int> add(vector<int> &A,vector<int> &B){
    vector<int> C;
    
    if (A.size()<B.size()) return add(B,A);
    int t=0;
    for (int i=0;i<A.size();i++){
        t+=A[i];
        if (i<B.size()) t+=B[i];
        C.push_back(t%10);
        t/=10;
    }
    if (t) C.push_back(t);
    return C;
}

int main(){
    string a,b;
    vector<int> A,B;
    cin>>a>>b;
    for (int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    for (int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
    auto C=add(A,B);
    
    for (int i=C.size()-1;i>=0;i--) cout<<C[i];
    return 0;
} 

 减法

#include <iostream>
#include <vector>

using namespace std;
bool cmp(vector<int> &A,vector<int> &B)
{
    if(A.size()!=B.size()) return A.size()>B.size();
    
    for(int i=A.size()-1;i>=0;i--)
    {
        if(A[i]!=B[i])
            return A[i]>B[i];
    }
    return true;
}
vector<int> sub(vector<int> &A,vector<int> &B)
{
    vector<int> C;
    for(int i=0,t=0;i<A.size();i++)
    {
        t=A[i]-t;
        if(i<B.size()) t-=B[i];
        C.push_back((t+10)%10);
        if(t<0) t=1;
        else t=0;
    }
    
    while(C.size()>1 && C.back()==0) C.pop_back();
    return C;
}

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

 乘法

#include<iostream>
#include<vector>

using namespace std;
vector<int> mul(vector<int> &A,int b)
{
    vector<int> C;
    
    int t=0;
    for(int i=0;i<A.size() || t;i++)
    {
        if(i<A.size()) t+=A[i]*b;
        C.push_back(t%10);
        t/=10;
    }
    
    while(C.size()>1 && C.back()==0) C.pop_back();
    return C;
}

int main()
{
    string a;
    int b;
    
    cin>>a>>b;
    
    vector<int>A;
    for (int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    auto C=mul(A,b);
    
    for (int i=C.size()-1;i>=0;i--) cout<<C[i];
    return 0;
}

除法

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
vector<int> div(vector<int> &A,int b,int &r)
{
    vector<int> C;
    r=0;
    for(int i=A.size()-1;i>=0;i--)
    {
        r=r*10+A[i];
        C.push_back(r/b);
        r%=b;
    }
    reverse(C.begin(),C.end());
    while(C.size()>1 && C.back()==0) C.pop_back();
    return C;
}
int main()
{
    string a;
    vector<int> A;
    
    int B;
    cin>>a>>B;
    for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    int r;
    auto C=div(A,B,r);
    for (int i=C.size()-1;i>=0;i--) cout<<C[i];
    cout<<endl<<r;
    
    return 0;
}

 

标签:高精度,int,back,--,vector,include,size
From: https://www.cnblogs.com/Map1eaf/p/17157627.html

相关文章

  • 一、基础算法(快排,归并,二分,高精度,前缀和,差分)
    一、基础算法快速排序题目:给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。数据范围:1≤n≤100000,所有......
  • 高精度加减乘模板
    高精度加法: #include<iostream>#include<cstdio>#include<cstring>//高精度入门constintMAX=100005;usingnamespacestd;chars[MAX];chars1[MAX];inta[M......
  • 高精度定位技术分析
    高精度定位技术分析关于GPS、RTK、PPK三种定位技术的探讨高精度定位通常是指亚米级、厘米级以及毫米级的定位,从市场需求来看,定位的精度越高往往越好。“高精度、低成本”......
  • 计讯物联高精度定位GNSS接收机TN521在水库大坝变形监测的应用解析
    由于水库大坝在地质环境恶劣和气候条件复杂的条件下,水库坝体的稳定性会受到严重考验。为了保证水库大坝的安全运营,GNSS作为一种实现远程自动化测量的高精度的变形监测技术,......
  • C++奥赛一本通刷题高精度题解
    title:C++奥赛一本通刷题记录(高精度)date:2017-11-15tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(高精度)2017.11.15Bygwj1139177410大整数加法​......
  • P1000 高精度加法
    高精度问题C语言解决高精度问题需要使用模拟的方法来解决问题。我们进行模拟的时候要反过来,我们输入的时候要从低位往高位,但是我们算的时候要从高位往低位算。代码案例......
  • AcWing 791. 高精度加法C++数组实现
    高精度加法a,b均为正整数#include<iostream>usingnamespacestd;constintN=100010;intA[N],B[N],C[N];intAdd(inta[],intb[],intc[],intcnt){......
  • 搞定物联网定位:UWB高精度定位技术原理与实现
    搞定物联网定位:UWB高精度定位技术原理与实现https://mp.weixin.qq.com/s/18kCIFtKCfSQGoZy4NDLaA搞定物联网定位:UWB高精度定位技术原理与实现原创 刘恒进 腾讯云开发......
  • 高精度(有符号)
    #include<bits/stdc++.h>usingnamespacestd;usingll=longlong;structbig_base{ staticconstintL=1E4,MOD=10,B=1; //attention除法效率位数^2*MO......
  • 高精度差分
    四、高精度:1.大整数的存储2.模拟加法的存储123+89=212(Ai+Bi+t)#include<vector>将数组的长度变长例题1.高精度减法#include<iostream>#include<vector>using......