求条,玄关,急!
查看原帖
求条,玄关,急!
1352022
__Digger__楼主2024/10/1 11:06

rt,25分

#include<bits/stdc++.h>
#include<string>

using namespace std;

int n;
string ans;
string add(string a, string b) {
	string res = "";
	if(a.size() > b.size()) {
		swap(a, b);
	}
	for(int i = 1; a.size() < b.size(); i++) {
		a = '0' + a;
	}
	for(int i = b.size() - 1; i >= 0; i--) {
		res += (b[i] - '0') + (a[i] - '0') + '0';
	}
	for(int i = 0; i < res.size(); i++) {
		if(res[i] > '9') {
			res[i] -= 10;
			res[i + 1]++;
		}
	}
	while(res.size() > 0 && res[res.size() - 1] == '0') {
		res.erase(res.size() - 1);
	}
	reverse(res.begin(), res.end());
	return res;
}

string mul(string a, string b) {
	string res = "";
    res.resize(a.size() + b.size());
    for(int i = 0; i < res.size(); i++) {
    	res[i] = '0';
	}
	reverse(a.begin(), a.end());
	reverse(b.begin(), b.end());
    for(int i = 0; i < a.size(); i++) {
    	for(int j = 0; j < b.size(); j++) {
    		int x = (a[i] - '0') * (b[j] - '0');
            res[i + j] += x % 10;
            res[i + j] = (res[i + j] - '0') % 10 + '0';
            res[i + j + 1] += x / 10;
        }
	}
	while(res.size() > 0 && res[res.size() - 1] == '0') {
		res.erase(res.size() - 1);
	}
	reverse(res.begin(), res.end());
    return res;
}

int main() {
	cin >> n;
	string x = "1", ans = "0";
	for(int i = 1; i <= n; i++) {
		x = mul(x, to_string(i));
		ans = add(ans, x);
	}
	cout << ans; 
	return 0;
}
2024/10/1 11:06
加载中...