求找错(CE)谢谢大佬们
查看原帖
求找错(CE)谢谢大佬们
1580762
hzqmvcyx楼主2025/1/13 11:21
#include<bits/stdc++.h>

using namespace std;
string add(string a, string b);
string tt(int x);
string mul(string a, string b);

int main() {
    int n;
    cin >> n;
    string sum = "0";
    string xiang = "1";
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            xiang = mul(xiang, tt(j));
        }
        sum = add(sum, xiang);
        xiang = "1";
    }
    cout << sum;
    return 0;
}

string tt(int x) {
    string res = "";
    while (x) {
        res = char(x % 10 + '0') + res;
        x /= 10;
    }
    return res;
}
string mul(string a, string b) {
    int la = a.length();
    int lb = b.length();
    int ans[la + lb] = {};
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    string res = "";
    for (int i = 0; i < la; i++) {
        for (int j = 0; j < lb; j++) {
            ans[i + j] += (a[i] - '0') * (b[j] - '0');
        }
    }
    for (int i = 0; i < la + lb; i++) {
        ans[i + 1] += ans[i] / 10;
        res = char(ans[i] % 10 + '0') + res;
    }
    while (res[0] == '0' && res.length() != 1) res.erase(0, 1);
    return res;
}
string add(string a, string b) {
    string ss = "";
    int cr = 0;
    while (b.size() < a.size()) {
        b = '0' + b;
    }
    while (b.size() > a.size()) {
        a = '0' + a;
    }
    for (int i = a.size() - 1; i >= 0; i--) {
        ss = char(((a[i] - '0' + b[i] - '0' + cr) % 10 + '0')) + ss;
        cr = (a[i] - '0' + b[i] - '0' + cr) / 10;
    }
    if (cr) ss = '1' + ss;
    return ss;
}
2025/1/13 11:21
加载中...