ACM算法训练【高精度】

简介: ACM算法训练【高精度】


1.高精度加法


题目


85ea7912063c456aafac32828553ec7e.png


直接用数组模拟相加的过程


代码


#include <bits/stdc++.h>
using namespace std;
vector<int> Badd(vector<int> &A,vector<int> &B)
{
    vector<int> C;
    int t=0;      //进位
    for(int i=0;i<A.size()||i<B.size();i++)
    {
        if(i<A.size()) t+=A[i];
        if(i<B.size()) t+=B[i];
        C.push_back(t%10);    //本位结果
        t/=10;    //进位
    }
     if(t>0) C.push_back(1);     //最后一位有进位的情况
    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=Badd(A,B);
    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
    return 0;
}


2.高精度减法


题目


fb4ecc998da54d2d9fdbaeaa96d2c77b.png


代码:


直接用数组模拟相减的过程


#include <bits/stdc++.h>
using namespace std;
vector<int> sub(vector<int> &A,vector<int> &B)
{
    vector<int> C;
    int t=0;   //进位
    for(int i=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();   //去除前导0
    return C;
}
int main()
{
    string a,b;
    vector<int> A,B,C;
    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');
    int fa=0;    //标记符号
    if(a.size()>b.size())
        C=sub(A,B);
    else if (a.size()==b.size())
        if(a>=b) C=sub(A,B);
        else
        {
            C=sub(B,A);
            fa=1;
        }
    else
    {
        C=sub(B,A);
        fa=1;
    }
    if(fa) cout<<'-';    //输出负号
    for(int i=C.size()-1;i>=0;i--)  cout<<C[i];
    return 0;
}


3.高精度乘法


题目

e1aa87eddfed40ee98ffb811717f0748.png


代码


乘法的运算过程:

本位=(进位+相乘)%10

进位=(进位+相乘)/10


7ecd0e7a07a34b62a31e327d194f9b8c.png


#include <bits/stdc++.h>
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+t;
        C.push_back(t%10);
        t /=10;
    }
    while(C.size()>1&&C.back()==0) C.pop_back();    //去除前导0
    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;
}


4.高精度除法


题目

60270595af224c24956ae61b17ea08e5.png


代码


9edbcf71829f4a1ea4d16d007e047a20.png


#include <bits/stdc++.h>
using namespace std;
vector<int> Cdiv(vector<int> &A,int b,int &r)
{
    vector<int> C;
    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();    //去除前导0
    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');
    int r=0;   //定义余数
    auto C=Cdiv(A,b,r);
    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
    cout<<endl<<r;
    return 0;
}
目录
相关文章
|
3月前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
134 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
3月前
|
算法 Java C++
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
【贪心算法】算法训练 ALGO-1003 礼物(C/C++)
|
3月前
|
算法 C++
蓝桥 算法训练 共线(C++)
蓝桥 算法训练 共线(C++)
|
6月前
knn增强数据训练
【7月更文挑战第27天】
47 10
|
6月前
|
数据采集 编解码 人工智能
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第19天】DeepMind的JEST算法革新AI训练,提升效率13倍,节能10倍。通过联合数据批次选择,预训练指导及多分辨率训练,优化资源利用,降低能耗。实验显示性能提升,达到SOTA水平,但实施需大量资源,依赖优质参考模型。[论文链接](https://arxiv.org/pdf/2406.17711)
81 10
|
6月前
knn增强数据训练
【7月更文挑战第28天】
51 2
|
6月前
|
人工智能 边缘计算 算法
破解ChatGPT惊人耗电!DeepMind新算法训练提效13倍,能耗暴降10倍
【7月更文挑战第20天】DeepMind unveils Switch Transformer, revolutionizing AI energy consumption. This novel algorithm boosts training efficiency by 13x and slashes energy use by 10x compared to ChatGPT, marking a significant leap towards eco-friendly AI.
60 2
|
5月前
|
算法 搜索推荐
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较

热门文章

最新文章