N!Again
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
大体题意为n的阶乘与2009取模,其实从41开始结果为0,代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long long int i;
long long int a;
while(scanf("%lld", &a) != EOF)
{
if(a > 40)
{
cout << 0 << endl;
continue;
}
long long int ans = 1;
for(i = 0; i < a; i++)
{
ans = (ans % 2009) * ((i + 1) % 2009) % 2009;
}
cout << ans << endl;
}
return 0;
}