本文共 1013 字,大约阅读时间需要 3 分钟。
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)!
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
代码及注释如下:
/*2009及之后的mod2009都等于0;前面的测了一下发现41mod2009就等于0了...综上40之后的mod2009=0.40之前的需要算一波*/#include#include #include #include using namespace std;int a[50];int n;void Init(){ a[0]=1; a[1]=1; for (int i=2;i<=40;i++) { a[i]=a[i-1]*i%2009; }}int main(){ Init(); while (scanf("%d",&n)!=EOF) { if(n<=40) printf("%d\n",a[n]); else printf("0\n"); } return 0;}
转载地址:http://uaaen.baihongyu.com/