本文主要是介绍1173:阶乘和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
通过代码:
#include <bits/stdc++.h> using namespace std; int n, a[100001] = {1, 1}, b[100001], sum[100001] = {1, 1}; void Mult(int k) {if(k > n) return;memset(b, 0, sizeof(b));for(int i = 1; i <= a[0]; i ++) b[i] = a[i] * k;for(int i = 1; i <= a[0]; i ++)if(b[i] > 9) {b[i + 1] += b[i] / 10, b[i] %= 10;if(i == a[0]) a[0] ++;}for(int i = 1; i <= a[0]; i ++) a[i] = b[i];sum[0] = a[0];for(int i = 1; i <= sum[0]; i ++) {sum[i] += a[i];if(sum[i] > 9) {sum[i + 1] += sum[i] / 10, sum[i] %= 10;if(i == sum[0]) sum[0] ++; }}while(sum[sum[0]] == 0 && sum[0] > 0) sum[0] --; Mult(k + 1); } int main() {scanf("%d", &n);Mult(2);for(int i = sum[0]; i >= 1; i --) putchar(sum[i] + '0');return 0; }
这篇关于1173:阶乘和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!