hdu 2674 N!Again
Posted wz-archer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2674 N!Again相关的知识,希望对你有一定的参考价值。
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)!
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时n!%2009都是0
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <cmath> #include <queue> #include <deque> #include <cmath> #include <map> using namespace std; typedef long long ll; #define INF 0x7fffffff const double inf=1e20; const int maxn=1e5+10; const int mod=1e9+7; int a[2009]; int main(){ a[0]=a[1]=1; for(int i=2;i<2009;i++){ a[i]=a[i-1]*i; a[i]%=2009; printf("%d %d ",i,a[i]); } int n; while(scanf("%d",&n)!=EOF){ if(n>=2009)printf("0"); else printf("%d",a[n]); printf(" "); } return 0; }
对2009做质因子分解发现,2009=7*7*41,所以41!mod2009==0,只用求前40项就好了
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <cmath> #include <queue> #include <deque> #include <cmath> #include <map> using namespace std; typedef long long ll; #define INF 0x7fffffff const double inf=1e20; const int maxn=1e5+10; const int mod=1e9+7; int a[41]; int main(){ a[0]=a[1]=1; for(int i=2;i<41;i++){ a[i]=a[i-1]*i; a[i]%=2009; } int n; while(scanf("%d",&n)!=EOF){ if(n>=41)printf("0"); else printf("%d",a[n]); printf(" "); } return 0; }
以上是关于hdu 2674 N!Again的主要内容,如果未能解决你的问题,请参考以下文章
hdu 1848 Fibonacci again and again(SG函数)