码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2674 N!Again

时间:2020-03-14 23:37:48      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:file   big   queue   ffffff   pac   output   inf   class   mes   

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\n",i,a[i]);
    }
    int n;
    while(scanf("%d",&n)!=EOF){
        if(n>=2009)printf("0");
        else printf("%d",a[n]);
        printf("\n");
    }
    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("\n");
    }
    return 0;
}

 

hdu 2674 N!Again

标签:file   big   queue   ffffff   pac   output   inf   class   mes   

原文地址:https://www.cnblogs.com/wz-archer/p/12495077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!