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)!

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 2674

数论专题hdu2674

HDU 1021[Fibonacci Again]规律

hdu 1848 Fibonacci again and again(SG函数)

HDU 1848 Fibonacci again and again

HDU_1848 Fibonacci again and again