N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 86875 Accepted Submission(s): 25551
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
用vector模拟阶乘运算
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <cmath>
#include <vector>
#define max_ 100010
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
int n;
vector<int>v;
vector<int>::iterator it;
void mul(int x)
{
ll tmp=0,cf=0;
int l=v.size()-1;
for(int i=l;i>=0;i--)
{
int d=v[i]*x+cf;
v[i]=d%10;
cf=d/10;
}
while(cf!=0)
{
v.insert(v.begin(),cf%10);
cf/=10;
}
}
int main(int argc, char const *argv[]) {
while(cin>>n)
{
v.clear();
v.push_back(1);
for(int i=1;i<=n;i++)
{
mul(i);
}
for(int i=0;i<v.size();i++)
{
printf("%d",v[i]);
}
printf("\n" );
}
return 0;
}