每日一九度之 题目1076:N的阶乘
Posted Asimple
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一九度之 题目1076:N的阶乘相关的知识,希望对你有一定的参考价值。
时间限制:3 秒
内存限制:128 兆
特殊判题:否
提交:7601
解决:2749
- 题目描述:
-
输入一个正整数N,输出N的阶乘。
- 输入:
-
正整数N(0<=N<=1000)
- 输出:
-
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
- 样例输入:
-
4 5 15
- 样例输出:
-
24 120 1307674368000
大数的乘法。
//Asimple #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <vector> #include <cctype> #include <cstdlib> #include <stack> #include <cmath> #include <set> #include <map> #include <string> #include <queue> #include <limits.h> #define INF 0x7fffffff using namespace std; const int maxn = 3005; typedef long long ll; int n; ll a[maxn]; int main(){ while( ~scanf("%d",&n) ){ if( n == 0 ){ printf("1\n"); continue; } //进位 int c = 0, len = 1; memset(a,0,sizeof(a)); a[0] = 1; for(int i=1; i<=n; i++){ c = 0; for(int j=0; j<len; j++){ a[j] = a[j] * i + c; if( a[j]>=10 ){ c = a[j] / 10; a[j] = a[j] % 10; } else c = 0; } while( c != 0 ){ int t = c % 10; a[len++] = t; c = c / 10; } } int i, j; for(i=maxn; i>=0; i--){ if( a[i] != 0 ){ break; } } for(j=i; j>=0; j--){ printf("%d",a[j]); } printf("\n"); } return 0; }
以上是关于每日一九度之 题目1076:N的阶乘的主要内容,如果未能解决你的问题,请参考以下文章