75分求助
查看原帖
75分求助
678057
_TeaClaudz_楼主2023/8/15 22:11
#include<bits/stdc++.h>
using namespace std;

int a[100], s[100], la, ls;

void add() {
    int x = 0;
    for(int i = 0; i < la; ++i) {
        s[i] += a[i] + x;
        x = s[i] / 10;
        s[i] %= 10;
    }
    if(la > ls) ls = la;
    if(x) {
        s[la++] += x;
    }
    while(s[ls - 1] == 0 && ls > 1) ls--;
}

void mul(int n) {
    int x = 0;
    for(int i = 0; i < la; ++i) {
        a[i] = a[i] * n + x;
        x = a[i] / 10;
        a[i] %= 10;
    }
    if(x) a[la++] = x;
    while(a[la - 1] == 0 && la > 1) la--;
    return;
}

int main() {
    int n, n2;
    ls = 1;
    s[0] = 0;
    cin >> n;
    n2 = n;
    while(n2) {
        a[la++] = n2 % 10;
        n2 /= 10;
    }
    for(int i = 1; i <= n; ++i) {
        memset(a, 0, sizeof(a));
        la = 1;
        a[0] = 1;
        for(int j = i; j >= 1; --j) {
            mul(j);
        }
        add();
    }
    for(int i = ls - 1; i >= 0; --i) {
        cout << s[i];
    }
    return 0;
}
2023/8/15 22:11
加载中...