阶乘之和(写完加强版再写解析)

#include<stdio.h> #include<string.h> int a[10000], b[10000], c[10000]; int len_a = 0, len_b = 0, len_c = 0; int main(void) { int n; scanf("%d", &n); b[1] = 1; len_b = 1; for (int i = 1; i <= n; i++) { len_a = 1; int m = i; while (m != 0) { a[len_a++] = m % 10; m /= 10; } for (int j = 1; j <= len_a; j++) { for (int k = 1; k <= len_b; k++) { c[j + k - 1] += a[j] * b[k]; } } len_c = len_a + len_b; for (int j = 1; j <= len_c; j++) { if (c[j] > 9) { c[j + 1] += c[j] / 10; c[j] %= 10; if (j == len_c) len_c++; } } for (int j = len_c; c[len_c] == 0; j--) { len_c--; } len_b = len_c; for (int j = 1; j <= len_c; j++) b[j] = c[j]; memset(c, 0, sizeof(c)); } for (int i = len_b; i >=1; i--) { printf("%d", b[i]); } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号