继续数论。。
Problem Description
WhereIsHeroFrom: Zty,what are you doing ?
Zty: Iwant to calculate N!......
WhereIsHeroFrom: Soeasy! How big N is ?
Zty: 1<=N <=1000000000000000000000000000000000000000000000…
WhereIsHeroFrom: Oh! Youmust 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 linewill contain one integer N(0 <= N<=10^9). Process to end of file.
Output
For eachcase, output N! mod 2009
Sample Input
4
5
Sample Output
24
120
/*****************************************************
数据规模 1<N<10^9,妥妥的要找规律了。。
从 N = 1 到N = 40 时还都能正常算出,(正常规律 num[i] = num[i-1] * i %2009; ( 1<N<10^9),,,N 为40时,num[N] = 245,可以发现 245 * 41 = 10045 = 2009 * 5,
所以,就可以知道了,N>40时,输出全部为 0。。。
***********************************************************/
#include<stdio.h>
#include<iostream>
using namespace std;
int num[42];
void cal()
{
num[0] = 1,num[1] = 1;
for(int i = 2;i<42;i++)
num[i] = num[i-1]*i%2009;
}
int main()
{ int n;
cal();
while(cin>>n)
{
if(n>41)
printf("%d\n",0);
else
printf("%d\n",num[n]);
}
return 0;
}