参考代码:
#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分
5 人评分
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1420 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1259 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:476 |
1124题解浏览:595 |
大家好,我是验题君浏览:577 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:690 |
C二级辅导-计负均正 (C语言代码)浏览:482 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:345 |
Pascal三角 (C语言代码)浏览:653 |
单词个数统计 (C语言代码)浏览:1013 |