首页 > 其他 > 详细

高精度计算

时间:2019-05-19 16:51:07      阅读:89      评论:0      收藏:0      [点我收藏+]

高精度加法

  

//简单高精度加法 不考虑符号
const
int N=100; int len,a[N+1],b[N+1]; void Init(int a[]) { string s; cin>>s,a[0]=s.size(); FORa(i,1,a[0]) a[i]=s[a[0]-i]-‘0‘; //逆序储存 } void Solve() { len=a[0]>b[0]?a[0]:b[0],len++; //注意答案的位数 FORa(i,1,len) { a[i]+=b[i]; if(a[i]>=0) a[i+1]+=a[i]/10,a[i]%=10;//最好不要这样写(a[i+1]+=a[i]/10,a[i]%=10),这样会无形增加时间复杂度 } while(!a[len]&&len>1) len--; //以防输出无答案 FORs(i,len,1) printf("%d",a[i]);//因为储存的问题,逆序输出 } int main() { Init(a),Init(b),Solve(); return 0; }

 

高精度减法

const int N=100;
int len,a[N+1],b[N+1];
void Init(int a[])
{
    string s;
    cin>>s,a[0]=s.size();
    FORa(i,1,a[0]) a[i]=s[a[0]-i]-0;
}
void Solve()
{
    len=a[0];
    FORs(i,a[0],1) 
    {
        a[i]-=b[i];
        if(a[i]<0) a[i+1]--,a[i]+=10;        
    }
    while(!a[len]&&len>1) len--;
    FORs(i,len,1) printf("%d",a[i]);
}
int main()
{
    Init(a),Init(b),Solve(); 
    return 0;
}

 

高精度乘法

const int N=100;
int len,a[N+1],b[N+1],c[2*N+2];
void Init(int a[])
{
    string s;
    cin>>s,a[0]=s.size();
    FORa(i,1,a[0]) a[i]=s[a[0]-i]-0;
}
void Solve()
{
    len=a[0]+b[0]+1;
    FORa(i,1,a[0])
        FORa(j,1,b[0])
            c[i+j-1]+=a[i]*b[j]; //在科学文社出版社出版的信息学奥赛一本通中(新手推荐),简单高精好像有一点问题。
    FORa(i,1,len) if(c[i]>=10) c[i+1]+=c[i]/10,c[i]%=10; //先处理,后进位
    while(!c[len]&&len>1) len--;
    FORs(i,len,1) printf("%d",c[i]);
}
int main()
{
    Init(a),Init(b),Solve(); 
    return 0;
}

 

高精度除法

const int N=100;
int len,a[N+1],c[N+1],b;
void Init(int a[])
{
    string s;
    cin>>s,a[0]=s.size();
    FORa(i,1,a[0]) a[i]=s[a[0]-i]-0;
}
void Solve()
{
    int x=0,len=a[0];
    FORs(i,a[0],1) x=(x*10+a[i]),c[i]=x/b,x%=b; //注意解决方式与加减乘不同,需要从头开始,
    while(!c[len]&&len>1) len--;
    FORs(i,len,1) printf("%d",c[i]);
    printf("\n%d",x);
}
int main()
{
    Init(a),scanf("%d",&b),Solve(); 
    return 0;
}

 

高精度计算

原文:https://www.cnblogs.com/SeanOcean/p/10882768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!