ACM HDU 2674 N! Again(数论)

继续数论。。

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;
}
上一篇:Java中的分代垃圾回收策略


下一篇:详述USB OTG发展及协议标准