很多人说我前面一篇用python有点赖皮,这里我cpp实现一下。
我对cal_fac简单优化了一下,使用了记忆化的方式,减少重复计算。
#include <iostream> #include <vector> using namespace std; using ll = long long; #define N 10000 vector<ll> fac(N, -1); ll cal_fac(ll x) { ll& res = fac[x]; if (x == 1) return res = 1; if (res != -1) return res; return res = x*cal_fac(x-1); } int main() { ll n; while (cin >> n) { ll p = n, m = n; if (n % 2 == 0) m--; if (n % 2 == 1) p--; ll y1 = 0, y2 = 0; for (int i = 1; i <= m; i += 2) { y1 += cal_fac(i); } for (int i = 2; i <= p; i += 2) { y2 += cal_fac(i); } cout << y1 << " " << y2 << endl; } }