您的位置:首页 > 大数据 > 人工智能

hdu 2674 N!Again(简单数学)

2016-08-08 09:45 281 查看
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

 
真有些想不到,做这道题就看你数感强不强,如果技巧找到了,极为简单。相关解释在代码中已经给出:
/*
2009 = 7*7*41,所以42之后的阶乘除以2009取余数都为0
*/

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
int num[45];
num[0] = 1;
num[1] = 1;
for(int i=2;i<=41;i++)
{
num[i] = (num[i-1]*i)%2009;
}

int n;
while(cin>>n)
{
if(n<=41)
{
cout<<num
<<endl;
}
else
{
cout<<0<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: