题解 | #阶乘#
阶乘
https://www.nowcoder.com/practice/e58c8a55162d49c48115bdfa5da7da56
用递归把1-50的阶乘保存到数组,累加即可。
#include <iostream> using namespace std; int jiecheng[100] = {0}; int jiec(int n) { if (n == 0 || n == 1) { jiecheng[n] = 1; return 1; } else { if (jiecheng[n] != 0) return jiecheng[n]; else { jiecheng[n] = n * jiec(n - 1); return n * jiec(n - 1); } } } int main() { jiec(50); int n; while (cin >> n) { // 注意 while 处理多个 case int m, p, y1 = 0, y2 = 0; if (n % 2 == 0) { p = n; m = n - 1; } else { p = n - 1; m = n; } for (int i = 1; i <= m; i += 2) { y1 += jiecheng[i]; } for (int i = 2; i <= p; i += 2) { y2 += jiecheng[i]; } cout<<y1<<" "<<y2<<endl; } return 0; } // 64 位输出请用 printf("%lld")