高精度(综述)

在解决一些问题时

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

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

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

加法:

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();}

就不展示例题了

 

 

 


posted @ 2020-02-23 23:24  ·Iris  阅读(306)  评论(0编辑  收藏  举报