- 思路:用一个数组,从1开始乘到n,满10进一位,最后逆序输出这个数组
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n; int main() { int a[100000]; int i, j; scanf("%d", &n); if (!n) { printf("1\n");//0的阶乘为1 } memset(a, 0, sizeof(a)); int len = 1; a[1] = 1; for (i = 1; i <= n; i++) { for (j = 1; j <= len; j++) a[j] *= i; for (j = 1; j <= len; j++) { if (a[j]<10) continue; int pos = j; while (pos <= len) { if (a[len]>9) len++; a[pos + 1] += a[pos] / 10; a[pos] %= 10; pos++; } } } for (i = len; i >= 1; i--) printf("%d", a[i]); cout << endl; }
南阳理工大数阶乘
最新推荐文章于 2017-11-12 22:52:42 发布