标签:
时间限制: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; }
标签:
原文地址:http://www.cnblogs.com/Asimple/p/5932768.html