参考代码:
#include<iostream> #include<cstring> using namespace std; void add(int[], int[], int[]); void multiply(int, int[], int[]); void print(int[]); void clear(int[]); #define N 1000 int sum[N]; int fn[N]; int t[N]; int main() { int n; cin >> n; fn[0] = 1; for(int i = 1; i <= n; i++) { add(fn, sum, t); multiply(i + 1, fn, t); } print(sum); return 0; } void add(int a[], int b[], int c[]) { clear(c); for(int i = 0; i < N; i++) { c[i] += a[i] + b[i]; if(c[i] >= 10) { c[i + 1] += c[i] / 10; c[i] %= 10; } } memcpy(b, c, sizeof(int) * N); } void multiply(int a, int b[], int c[]) { clear(c); for(int i = 0; i < N; i++) { c[i] += a * b[i]; if(c[i] >= 10) { c[i + 1] += c[i] / 10; c[i] %= 10; } } memcpy(b, c, sizeof(int) * N); } void print(int arr[]) { int i = N - 1; while(i > 0 && arr[i] == 0) i--; for( ; i >= 0; i--) putchar(arr[i] + '0'); putchar('\n'); } void clear(int arr[]) { for(int i = 0; i < N; i++) arr[i] = 0; }
0.0分
6 人评分