• 高精度(综述)


    在解决一些问题时

    常常出现精度太高,而编译错误

    高精度算法能够解决精度问题

    使用高精度算法的核心算法

    加法:

    c[i]=a[i]+b[i];
    if(c[i]>=10){c[i]%=10;++c[i+1];}

    减法:

    if(a[i]<b[i]) {--a[i+1];a[i]+=10;}
    c[i]=a[i]-b[i];

    乘法:

    c[i+j-1]=a[i]*b[j]+c[i+j-1];
    x=c[i+j-1]/10;
    c[i+j-1]%=10;

    预处理时,需要字符串方式输入,利于字符串函数与操作运算

    void init(int a[])
    {
        string s;
        cin>>s;
        len=s.length();
        for(i=1;i<=len;i++)
            a[i]=s[len-i]-'0';
    }

    顺便在这里也说一下吧

    经常在题解里看到一种东西叫“快读”,与这个字符串输入有很大相似

    void read(int &x)
    {
        char c=getchar();x=0;
        while(c<'0'||c>'9') c=getchar();
        while(c<='9'&&c>='0'){ x=x*10+c-48;c=getchar();}

    就不展示例题了

    
    
  • 相关阅读:
    POJ-1182 食物链
    P1020 导弹拦截
    牛客寒假训练营2-C算概率
    牛客寒假训练营2-H施魔法
    牛客寒假算法训练营2-建通道
    D
    C
    A
    B
    【Luogu3366】【模板】最小生成树
  • 原文地址:https://www.cnblogs.com/-Iris-/p/12355067.html
Copyright © 2020-2023  润新知