★高精度【模板】 加、减、乘、除

#include <bits/stdc++.h>
using namespace std;
int main() {
    string a;
    string b;
    string c;
    cin>>a>>b;
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    int carry=0;
    for (int i=0;i<a.length()||i<b.length();i++) {
        if(i<a.length()) carry+=a.at(i)-'0';
        if(i<b.length()) carry+=b.at(i)-'0';
        c+=to_string(carry%10);
        carry/=10;
    }
    if (carry>0) c+=to_string(carry);
    reverse(c.begin(),c.end());
    cout<<c;
}

#include <bits/stdc++.h>
using namespace std;
bool compare(string a, string b) {
    if (a.length()<b.length()) return true;
    else if (a.length()>b.length()) return false;
    else {
        for (int i=a.length()-1;i>=0;i--) {
            if (b.at(i)>a.at(i)) return true;
            else return false;
        }
    }
    return false;
}
int main() {
    string a;
    string b;
    string c;
    cin>>a>>b;
    int flag=0;
    if (compare(a,b)) {
        flag=1;
    }
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    int cur=0;
    for (int i=0;i<a.length()||i<b.length();i++) {
        if (i<a.length()) cur+=a.at(i)-'0';
        if (i<b.length()) cur-=b.at(i)-'0';
        if (cur<0) {
            c+=to_string(cur+=10);
            cur=-1;
        }
        else {
            c+=to_string(cur);
            cur=0;
        }
    }
    while (c.length()>1 && c.back()==0)
    {
        c.pop_back();
    }
    if (flag) c+='-';
    reverse(c.begin(),c.end());
    cout<<c; 
}

#include <bits/stdc++.h>
using namespace std;
int main() {
    string a;
    string b;
    cin>>a>>b;
    vector<int> c(a.length()+b.length(),0);
    if (a=="0"||b=="0") {
        cout<<"0";
        return 0;
    }
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    for (int i=0;i<a.length();i++) {
        for (int j=0;j<b.length();j++) {
            c[i+j] += (a.at(i)-'0')*(b.at(j)-'0'); 
        }
    }
    int carry=0;
    for (int i=0;i<c.size();i++) {
        c[i]+=carry;
        carry=c[i]/10;
        c[i]%=10;
    }
    int start=c.size()-1;
    while (start>0&&c[start]==0) {
        start--;
    }
    for (int i=start;i>=0;i--) {
        cout<<c[i];
    }
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    string a;
    int b;
    string c;
    cin >> a >> b;

    if (a == "0" || b == 0) {
        cout << "0";
        return 0;
    }

    // cur 要开 long long !
    long long cur = 0;
    for (int i = 0; i < a.length(); ++i) {
        cur = cur * 10 + (a[i] - '0');
        if (cur < b) {
            c += '0';
        } else {
            c += (cur / b) + '0';
            cur %= b;
        }
    }

    int start = 0;
    while (start < c.size() && c[start] == '0') {
        start++;
    }

    // 如果结果全是 0,至少输出一个 0
    if (start == c.size()) {
        cout << "0";
    } else {
        for (int i = start; i < c.size(); ++i) {
            cout << c[i];
        }
    }

    return 0;
}
posted @ 2025-03-02 22:42  ToFuture$  阅读(10)  评论(0)    收藏  举报