高精度/高精度

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
string s1,s2;
int a[N],b[N],c[N],t[N*2];
bool comp(){
    if(a[0]!=t[0]) return a[0]>t[0];
    for(int i = 1;i<=a[0];i++){
        if(a[i]!=t[i]) return a[i]>t[i];
    }
    return true;
}
void sub(){
    for(int i = a[0];i>=1;i--){
        if(a[i]<t[i]){
            a[i] += 10;
            a[i-1] -= 1; 
        }
        a[i]-=t[i];
    }
}
int main() {
    cin>>s1>>s2;
    a[0] = s1.size();
    b[0] = s2.size();
    for(int i = 1;i<=a[0];i++){
        a[i] = s1[i-1]-'0';
    }
    for(int i = 1;i<=b[0];i++){
        b[i] = s2[i-1]-'0';
    }
    c[0] = a[0]-b[0]+1;
    for(int i = 1;i<=c[0];i++){
        memset(t,0,sizeof(t));
        for(int j = 1;j<=b[0];j++){
            t[j+i-1] = b[j];
        }
        t[0] = b[0]+i-1;
        a[0] = t[0];
        while(comp()){
            sub();
            c[i]++;
        }
    }
    bool flag = false;
    for(int i = 1;i<=c[0];i++){
        if(c[i]!=0) flag = true;
        if(flag) printf("%d",c[i]);
    }
    if(!flag) printf("0");
    return 0;
}

 

posted @ 2024-07-28 20:09  王一行(小号)  阅读(19)  评论(0)    收藏  举报