N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 80556 Accepted Submission(s): 23614
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
1 2 3
Sample Output
1 2 6
模拟大数乘法运算,直接上模板,这样比较费时,4位一组4位一组的运算会节省很多时间并且用一个变量来表示大数的长度
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int num[100002],n;
void multiply(int k){
int f = 0;
for(int i = 0;i < 50000;i++){
num[i] = num[i]*k+f;
f = num[i]/10;
num[i]%=10;
}
}
int main()
{
while(~scanf("%d",&n)){
memset(num,0,sizeof(num));
num[0] = 1;
for(int i = 1;i <= n;i++)
multiply(i);
int j;
for(j = 50000;j>=0;j--){
if(num[j]!=0)
break;
}
for(;j>=0;j--)
printf("%d",num[j]);
printf("\n");
}
return 0;
}