哇,超激动呢,第一次自己所谓的打表成功~!!
N!Again
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
WhereIsHeroFrom: Zty, what are you doing ?
Zty: I want to calculate N!......
WhereIsHeroFrom: So easy! How big N is ?
Zty: 1 <=N <=1000000000000000000000000000000000000000000000…
WhereIsHeroFrom: Oh! You must be crazy! Are you Fa Shao?
Zty: No. I haven's finished my saying. I just said I want to calculate N! mod 2009
Hint : 0! = 1, N! = N*(N-1)!
Zty: I want to calculate N!......
WhereIsHeroFrom: So easy! How big N is ?
Zty: 1 <=N <=1000000000000000000000000000000000000000000000…
WhereIsHeroFrom: Oh! You must be crazy! Are you Fa Shao?
Zty: No. I haven's finished my saying. I just said I want to calculate N! mod 2009
Hint : 0! = 1, N! = N*(N-1)!
Input
Each line will contain one integer N(0 <= N<=10^9). Process to end of file.
Output
For each case, output N! mod 2009
Sample Input
4 5
Sample Output
24 120
Author
WhereIsHeroFrom
#include <iostream>
#include <cstdio>
/*int main()
{
int NI[5000];
NI[0]=1;
freopen("output.txt","w",stdout);
for(int i=1;i<5000;++i)
NI[i]=(NI[i-1]*i)%2009;
for(int i=0;i<5000;++i){
printf("%d,",NI[i]);
if(!(i%10))printf("\n");
}
return 0;
}*/
int main()
{
int NI[41]={1,
1,2,6,24,120,720,1022,140,1260,546,
1988,1757,742,343,1127,1960,1176,1078,392,1813,
1911,1862,637,1225,490,686,441,294,490,637,
1666,1078,1421,98,1421,931,294,1127,1764,245};
int N;
while(scanf("%d",&N)!=EOF){
if(N>40)printf("0\n");
else printf("%d\n",NI[N]);
}
return 0;
}