【C--】n ≥ 5后就乱套了 :(
查看原帖
【C--】n ≥ 5后就乱套了 :(
678057
_TeaClaudz_楼主2022/12/4 20:31
#include<bits/stdc++.h>
using namespace std;

int main() {
	vector<int> s, t;
	s.clear();
	s.push_back(0);
	int n;
	cin >> n;
	for(int i = 1; i <= n; ++i) {
	    t.clear();
	    t.push_back(1); 
	    for(int j = 1; j <= i; ++j) {
	        for(int c = 0; c < t.size(); ++c) t[c] *= j;
            int l = 1;
            while(l < t.size()) {
                if(t[l-1] > 9) {
                    t[l] += t[l-1] / 10;
                    t[l-1] %= 10;
                    l++;
                } else {
                    break;
                }
            }
            if(l == t.size()) {
                while(t[l-1] > 9) {
                    t.push_back(t[l-1] / 10);
                    t[l-1] %= 10;
                }
            }
			/*for(int c = t.size() - 1; c >= 0; --c) {
	    		printf("%d", t[c]);
			}
			printf("\n");*/
	    }
	    for(int c = 0; c < t.size(); ++c) {
	        s[c] += t[c];
	        int l = c+1;
	        while(l < s.size()) {
			    if(s[l-1] > 9) {
			    	s[l] += s[l-1] / 10;
			    	s[l-1] %= 10;
			    	l++;
			    } else {
			    	break;
			    }
		    }
		    if(s[l-1] > 9 && l == s.size()) s.push_back(s[l-1] / 10), s[l-1] %= 10;
	    }
	}
	for(int i = s.size() - 1; i >= 0; --i) {
	    printf("%d", s[i]);
	}
	return 0;
}
2022/12/4 20:31
加载中...