指点指点指点谢谢谢谢
查看原帖
指点指点指点谢谢谢谢
319003
肉包铁1810楼主2020/8/8 12:29

出现了一堆神奇的编译问题,果然我还是太弱了

#include <iostream>
#include <string>
using namespace std;
string jc (string n) {
    int t[100];
    int b = (int)n;
    int len = n.size();
    for (int i = 0; i < len; i++) {
        t[i] = n[len - i - 1] - '0';
    }
    for (int j = 1; j <= t; j++) {
        for (int i = 0; i < len; i++) {
            t[i] *= j;
        }
        for (int i = 0; i < len; i++) {
            if (t[i] >= 10) {
                t[i + 1] += t[i] / 10;
                t[i] %= 10;
            }
            while (t[len]) {
                t[len + 1] += t[len] / 10;
                t[len] %= 10;
                len++;
            }
        }
    }
    string s;
    for (int i = len - 1; i >= 0; i--) {
        s += string(t[i]);
    }
    return s;
}
string plus (string l, string r) {
    int len1 = l.size(), len2 = r.size();
    int a[100], b[100], c[100];
    for (int i = 0; i < len1; i++) {
        a[i] = l[len1 - i - 1];
    }
    for (int i = 0; i < len2; i++) {
        b[i] = r[len2 - i - 1];
    }
    int len = max(len1, len2);
    for (int i = 0; i < len; i++) {
        c[i] = a[i] + b[i];
        for (int i = 0; i < len; i++) {
            if (c[i] >= 10) {
                c[i + 1] += c[i] / 10;
                c[i] %= 10;
            }
            while (c[len]) {
                c[len + 1] += c[len] / 10;
                c[len] %= 10;
                len++;
            }
        }
    }
    string s;
    for (int i = len - 1; i >= 0; i--) {
        s += string(t[i]);
    }
    return s;
}
int main() {
    int n;
    cin >> n;
    string ans;
    for (int i = 1; i <= n; i++) {
        ans = plus(ans, jc((string)i));
    }
    cout << ans << endl;
    return 0;
}
2020/8/8 12:29
加载中...