高精度算法

学习目标:

高精度算法


学习内容:

  1. 掌握条件语句
  2. 高精度和低精度

 


 


学习产出:

高精乘

#include <bits/stdc++.h>
using namespace std;
const int N=1e5;
string x,y;
int a[N],b[N],c[N],la,lb,lc;

int main(){
    cin>>x>>y;
    la=x.length();
    lb=y.length();
    for(int i=0;i<la;i++){
        a[la-i]=x[i]-'0';
    }
    for(int i=0;i<lb;i++){
        b[lb-i]=y[i]-'0';    

    }

    for(int i=1;i<=la;i++){
        for(int j=1;j<=lb;j++){
            c[i+j-1]+=a[i]*b[j];
            c[i+j]+=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
    }
    lc=la+lb;
    while(c[lc]==0&&lc>1)    lc--;//消除0,并且当结果为领的时候保留;
    for(int i=lc;i>=1;i--)    cout<<c[i];
    return 0;
}

高精减

#include <bits/stdc++.h>
using namespace std;
const int N=1e5;
string x,y;
int a[N],b[N],c[N],la,lb,lc;
int main(){
    cin>>x>>y;
    la=x.length();
    lb=y.length();
    if(la<lb||(la==lb&&x<y)){//判断是小数-大数
        swap(x,y);
        swap(la,lb);
        cout<<"-";
    }
    for(int i=0;i<la;i++)      a[la-i]=x[i]-'0';        
    for(int i=0;i<lb;i++)   b[lb-i]=y[i]-'0';    
    lc=max(la,lb);
    for(int i=1;i<=lc;i++){
        if(a[i]<b[i]){//借位-1
            a[i]+=10;
            a[i+1]--;
        }
        c[i]=a[i]-b[i];
    }
    while(c[lc]==0&&lc>1)  lc--;//消除0,并且当结果为领的时候保留;
    for(int i=lc;i>=1;i--)    cout<<c[i];
    return 0;
}

高精加

#include <bits/stdc++.h>
using namespace std;
const int N=1e5;
string x,y;
int a[N],b[N],c[N],la,lb,lc;
int main(){
    cin>>x>>y;
    la=x.length();
    lb=y.length();
    
    for(int i=0;i<la;i++)      a[la-i]=x[i]-'0';        
    for(int i=0;i<lb;i++)      b[lb-i]=y[i]-'0';    
    
 lc=max(la,lb);
    for(int i=1;i<=lc;i++){
        c[i]  +=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]  %=10;
    }
    if(c[lc+1]>0)           lc++;//补长度
    for(int i=lc;i>=1;i--)    cout<<c[i];
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值