Hdu 2674 N!Again 阶乘 水题? 解题报告

来源:互联网 发布:http的默认端口 编辑:程序博客网 时间:2024/06/04 08:57

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;所以在41以后都是0了。然后前面怎么暴力都可以。

代码

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<vector>using namespace std;const int mod=2009;long long n;long long cal(int x){    long long ans=1;    for (int i=1;i<=x;i++)    ans=(ans*i)%mod;    return ans;}int main(){    while(scanf("%lld",&n)!=EOF)    {        if (n<=45) printf("%lld\n",cal(n));        else printf("0\n");    }    return 0;}