问题标题: 酷町堂:求高精度解析!!!!!

0
0
已解决
陈家傲
陈家傲
新手光能
新手光能

求高精度思路(或解析)

陈家傲在2021-05-06 21:05:15追加了内容

挖个坟.....(此贴十年后,如果我还能上问答的话,再结帖!!!)


0
已采纳
黄依成
黄依成
中级天翼
中级天翼

可以给你,如果能看懂就更好啦

#include<iostream>
#include<cstring>
using namespace std;
int a[100005],b[100005],c[100005];
string x,y;
string Plus(string x,string y){
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=x.size(),b[0]=y.size(),c[0]=max(a[0],b[0]);
    for(int i=1;i<=a[0];i++) a[i]=x[a[0]-i]-'0';
    for(int i=1;i<=b[0];i++) b[i]=y[b[0]-i]-'0';
    int jw=0;string ans="";
    for(int i=1;i<=c[0];i++){
        c[i]=a[i]+b[i]+jw;
        jw=c[i]/10,c[i]%=10;
    }
    if(jw>0){c[0]++,c[c[0]]=1;}
    for(int i=1;i<=c[0];i++) ans=char(c[i]+'0')+ans;
    return ans;
}
int main(){
    cin>>x>>y;
    cout<<Plus(x,y);
    return 0;
}

这个是加法,可能有点压行

#include<iostream>
#include<cstring>
using namespace std;
int a[10005],b[10005],c[10005];
string x,y;
string Mul(string x,string y){
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    a[0]=x.size(),b[0]=y.size(),c[0]=a[0]+b[0];
    for(int i=1;i<=a[0];i++) a[i]=x[a[0]-i]-'0';
    for(int i=1;i<=b[0];i++) b[i]=y[b[0]-i]-'0';
    int jw=0;string ans="";
    for(int i=1;i<=a[0];i++){
        for(int j=1;j<=b[0];j++) c[i+j-1]+=a[i]*b[j];
    }
    for(int i=1;i<=c[0];i++){
        if(c[i]>9){
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
    }
    for(int i=1;i<=c[0];i++) ans=char(c[i]+'0')+ans;
    return ans;
}
int main(){
    cin>>x>>y;
    string ans=Mul(x,y);
    while(ans[0]=='0') ans.erase(0,1);
    cout<<ans;
    return 0;
}

这个是乘法

学什么c++啊,python一行搞定(doge)

0
0
王子耀
王子耀
缔造者
缔造者

你们不是上节课上的字符串函数吗???

怎么现在就要自学高精度???

0
我要回答