全部评论 4

  • 不写一个函数,不费劲吗

    2025-01-17 来自 山东

    0
  • 我也是高精度
    #include<bits/stdc++.h>
    using namespace std;
    string add(string a, string b);
    string mul(string a, string b);
    string tostr(int a);
    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, tostr(j));
    }
    sum = add(sum, xiang);
    xiang = "1";
    }
    cout << sum;
    return 0;
    }
    string add(string a, string b) {
    string res = "";
    if(a.length() < b.length()) swap(a, b);
    while(b.length() < a.length()) b = '0' + b;
    int cnt = 0;
    for(int i = a.length() - 1; i >= 0; i--) {
    int aa = a[i] - '0';
    int bb = b[i] - '0';
    int ans = (aa + bb + cnt) % 10;
    res = char(ans + '0') + res;
    cnt = (aa + bb + cnt) / 10;
    }
    if(cnt == 1) res = '1' + res;
    return res;
    }
    string mul(string a, string b) {
    if(a == "0" || b == "0") return "0";
    int la = a.length(), lb = b.length();
    int ans[la + lb] = {};
    string res = "";
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    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;
    }
    if(res[0] == '0') res.erase(0, 1);
    return res;
    }
    string tostr(int a) {
    string res = "";
    while(a) {
    res = char(a % 10 + '0') + res;
    a /= 10;
    }
    return res;
    }

    2025-01-17 来自 山东

    0
  • 但厉害

    2024-12-03 来自 江苏

    0
  • 没必要

    2024-12-03 来自 江苏

    0
首页