#include<bits/stdc++.h> usingnamespacestd; vector<int> a, b, ans; int n; vector<int> mul(vector<int> &A, int b){ vector<int> C; int t = 0; for (int i = 0; i < A.size() || t; i++) { if (i < A.size()) t += A[i] * b; C.push_back(t % 10); t /= 10; } return C; } vector<int> add(vector<int> &A, vector<int> &B){ if (A.size() < B.size()) return add(B, A); vector<int> C; int t = 0, len = A.size(); for (int i = 0; i <= len; i++) { t += A[i]; if (i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; } if (t) C.push_back(t); return C; } intmain(){ scanf("%d", &n); for (int i = 1; i <= n; i++) { a.clear(); a.push_back(1); for (int j = 1; j <= i; j++) { b = mul(a, j); a = b; } ans = add(ans, a); } for (int i = ans.size() - 1; i >= 0; i--) cout << ans[i]; return0; }
题解到这里就结束了,以下是一些作者的题外话。
题外话
本题是 noip 1999 的题目,当时的竞赛不分普及组和提高组,可以使用的语言包括 basic ,方便好用的 stl 也没有解禁,甚至于整个中国也没有现在如此之多的 OIer 为了理想而奋斗。现如今的 OI 风雨交加,会有很多很多的 OIer 们因为现实不得不退役,但我认为在 OI 赛场上奋力拼搏,勤恳训练的日子会为所有参加竞赛、热爱竞赛的人留下永恒难忘的回忆。