寫的第一個是,快速冪,結果是自己的電腦都算不出來
第二個是迭代的階乘,最後發現題目給的數據很大,有10^5辣麽多....直接LTE,説到底必須離綫
/**
*
*Dtcg
*2014.12.08
***************/
#include <cstdio>
#include <map>
#include <cmath>
#include <vector>
#include <sstream>
#include <cstring>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mod=int(1e9+7);
struct inf{
ll s,z,res;
}one;
vector<inf>date;
inline bool z_cmp(inf a,inf b){
return a.z<b.z;
}
inline bool s_cmp(inf a,inf b){
return a.s<b.s;
}
int main(){
ll n,cnt=1;
while(scanf("%I64d",&n)!=EOF){
one.s=cnt++;
one.z=n;
date.push_back(one);
}
sort(date.begin(),date.end(),z_cmp);
ll j=0;
ll ans=1;
ll p=1;
for(ll i=1;i<=10000000;i++){
p=p*i%mod;
ans=ans*p%mod;
while(j<date.size()&&date[j].z==i)
date[j++].res=ans;
}
sort(date.begin(),date.end(),s_cmp);
for(ll i=0;i<date.size();i++)
printf("%I64d\n",date[i].res);
return 0;
}