参考代码:
#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语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:884 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:510 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:549 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:520 |
关于float,double变量的几点说明浏览:1810 |
C二级辅导-温度转换 (C语言代码)浏览:718 |
简单的a+b (C语言代码)浏览:415 |
上车人数 (C语言代码)浏览:709 |
数列问题 (C语言代码)浏览:1019 |
A+B for Input-Output Practice (III) (C语言代码)浏览:418 |