首页 > 其他分享 >高精度加减乘除模板

高精度加减乘除模板

时间:2024-11-17 23:07:34浏览次数:1  
标签:HTML 高精度 int back -- vector 加减乘除 模板 size

高精度加减法:

高精度加法

#include <iostream>
#include <vector>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B)
{
    if (A.size() < B.size()) return add(B, A);

    vector<int> C;
    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];
    cout << endl;

    return 0;
}

高精度减法

//通过(t+10)%10来处理t的正负两种情况

include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;

bool cmp(vector[HTML_REMOVED] &A,vector[HTML_REMOVED] &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[HTML_REMOVED]sub(vector[HTML_REMOVED] &A,vector[HTML_REMOVED] &B)
{
vector[HTML_REMOVED] C;
int t = 0;
for(int i = 0;i[HTML_REMOVED]1&&C.back() == 0)C.pop_back();
return C;
}
int main()
{
string a,b;
vector[HTML_REMOVED] 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’);
}
if(cmp(A,B))
{
auto C = sub(A,B);

for(int i = C.size()-1;i>=0;i--)
{
    cout<<C[i];
}
return 0;
}
else
{
    cout<<"-";
    auto C = sub(B,A); 
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 -- ) printf("%d", 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 << endl;

    return 0;
}

标签:HTML,高精度,int,back,--,vector,加减乘除,模板,size
From: https://www.cnblogs.com/RedSenior/p/18551361

相关文章

  • 模板——实现泛型编程的有力武器
    模板——实现泛型编程的有力武器我们为什么需要模板?模板前言:关于模板,相信大家都有所而闻,以下是我对C++模板的个人看法,希望能够帮助到你们呀!我们为什么需要模板?  请到大家看这一段代码?voidSwap(int&left,int&right){inttemp=left;left=right;r......
  • 分享一个易优cms响应式合同申请书报告网站模板
    在当今信息爆炸的时代,知识付费逐渐成为一种趋势,人们愿意为高质量的信息和服务买单。对于那些希望搭建一个专业且用户友好的知识付费网站的创业者来说,选择合适的网站模板至关重要。本文将介绍一款基于易优CMS的内容管理系统开发的知识付费网站模板——响应式合同申请书报告知识......
  • gofiber: 模板: 页面上用range循环显示
    一,代码:1,controllerfunc(dc*ArticleController)ListArticle(c*fiber.Ctx)error{ //处理获取文章的逻辑 article1:=new(Article) article1.Id=1 article1.Title="三国演义毛宗岗批本" article1.Author="罗贯中" article2:=new(Article) article2.Id......
  • C++ 模板
    C++模板Created:2024-03-24T20:24+08:00Published:2024-11-17T16:37+08:00Categories:CPP目录偏特化类模板函数模板形参包Question我记不住模板的语法,尤其是偏特化的语法,怎么办?面试问题利用类模板和函数模板实现编译器计算斐波那契数列模板的声明和定义为什么不能分开写......
  • AcWing 进阶课知识点模板梳理
    EK求最大流点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1005,M=20005,INF=1e8;intn,m,S,T;inth[N],e[M],f[M],ne[M],idx;intq[N],d[N],pre[N];boolst[N];voidadd(inta,intb,intc){e[idx]......
  • gofiber: 模板:判断if条件
    一,代码:1,controllerfunc(dc*ArticleController)GetArticle(c*fiber.Ctx)error{ //处理获取文章的逻辑 article:=new(Article) article.Id=1 article.Title="三国演义金圣叹批本" article.Author="罗贯中" user:=c.Query("user") myMap:=fib......
  • gofiber:模板:包含header和footer
    一,代码1,controllerfunc(dc*ArticleController)GetArticle(c*fiber.Ctx)error{ //处理获取文章的逻辑 article:=new(Article) article.Id=1 article.Title="三国演义金圣叹批本" article.Author="罗贯中" //returnc.Status(200).JSON(config.Success(ar......
  • gofiber: 使用模板
    一,安装模板库$gogetgithub.com/gofiber/template/html/v2go:downloadinggithub.com/gofiber/template/html/v2v2.1.2go:downloadinggithub.com/gofiber/utilsv1.1.0go:addedgithub.com/gofiber/template/html/v2v2.1.2go:addedgithub.com/gofiber/utilsv1.1.0......
  • 【模板】最小生成树-kruskal
    intfather[5010],n,m;intfind(intx)//找根函数,记得进行路径压缩{if(father[x]==x)returnx;elsereturnfather[x]=find(father[x]);}intsame(intx,inty)//简化代码{if(find(x)==find(y))return1;elsereturn0;}structedge{......
  • HbuilderX 插件开发-模板创建
    实现思路使用HbuilderX打开某个文档时右键点击的时候获取当前打开的文档内容使用API替换为自己的模板示例package.json{ "id":"SL-HbuilderX-Tool", "name":"SL-HbuilderX-Tool", "description":"快速创建html,vue2模板", "displayName":......