求助!!!
  • 板块学术版
  • 楼主2022fsjh
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/8/27 19:24
  • 上次更新2023/10/27 13:25:17
查看原帖
求助!!!
712168
2022fsjh楼主2022/8/27 19:24

求把两端代码合并成判断大小之后的高精度减法。 输入的两个正整数中较大者减去较小者的差值。

代码1:(高精)比大小

#include<iostream>
#include<algorithm>
using namespace std;
main()
{
    string a,b;
    cin>>a>>b&&a!="0"&&b!="0"

        bool check=true,same=true;
        int xa[1000]={},xb[1000]={};
        for(int i=0;i<a.length();i++)
            xa[i]=a[a.length()-i-1]-'0';
        for(int i=0;i<b.length();i++)
            xb[i]=b[b.length()-i-1]-'0';
        for(int i=max(a.length(),b.length());i>=0;i--){
            if(xa[i]!=xb[i]) same=false;
            if(xa[i]<xb[i]) {check=false;break;}
            if(xa[i]>xb[i]) break;
        }
        if(same)
            cout<<"ping"<<endl;
        else
            check?cout<<"a win"<<endl:cout<<"b win"<<endl;
}

代码2:(高精减法)

#include<bits/stdc++.h>
using namespace std;
int a[20001],b[20001],c[20001];
char q1[20001],q2[20001];
int main(){
    cin>>q1>>q2;
    int len1=strlen(q1),len2=strlen(q2);
    for(int i=len1;i>=1;i--){
        a[i]=q1[len1-i]-'0';
    }
    for(int i=len2;i>=1;i--){
        b[i]=q2[len2-i]-'0';
    }
    for(int i=1;i<=len1;i++){
        c[i]=a[i]-b[i];
    }
    for(int i=1;i<=len1;i++){
        if(c[i]<0){
            c[i]+=10;
            c[i+1]--;
        }
    }
    while(c[len1]==0){
        len1--;
    }
    for(int i=max(1,len1);i>=1;i--){
        cout<<c[i];
    }
    return 0;
}

【数据限制】 30%的数据,二个数均小于2×10^9。

50%的数据,二个数均小于1×10^16。

100%的数据,二个数均小于1×10^20000。

70%的数据,第一个数大于第二个数。

2022/8/27 19:24
加载中...