• 高精度计算——乘法与加法


    高精度计算算是各种竞赛的基础性题目了,在poj上做了3道,就小小的总结一下。

    首先,高精度乘法。典型的例子是阶乘: 即输入n,计算n!

    #include<iostream>
    using namespace std;
    
    const int maxn=3000;
    imt f[maxn];
    
    int main()
    {
        int i,j,n;
        cin>>n;
        memset(f,0,sizeof(f));
        f[0]=1;  //初始时,设结果是1,则下面从2开始
        for(i=2;i<=n;i++)
        { //乘以i
            int c=0;//记录进位
            for(j=0;j<maxn;j++)
            {
                int s=f[j]*i+c;//计算某个位计算后的结果
                f[j]=s%10;
                c=s/10;
            }
        }
        //忽略数组中的前导0
        for(j=maxn-1;j>=0;j--) if(f[j]) break;
        //输入有效位
        for(i=j;i>=0;i--) cout<<f[i];
        cout<<endl;
        
        return 0;
    }

    上面代码中,比较重要是两个循环中进行的乘法模拟,然后是最后的对前导0的忽略。

    高精度加法很简单,主要就是模拟逐位的加法,如果超过了9,则进行取余,并且对下一位进1

    poj里面这次做的3道是1001,1047,1503

  • 相关阅读:
    delphi 焦点定位
    delphi cxgrid 添加分页
    推动力
    python enumerate 函数用法
    Python pass语句作用与用法
    Python 元组知识点
    python 练习多级菜单思路
    一点练习题
    优化mysql服务器
    对自己的忠告
  • 原文地址:https://www.cnblogs.com/soyscut/p/3218071.html
Copyright © 2020-2023  润新知