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

hdoj 5391 Zball in Tina Town

时间:2015-08-16 15:02:24      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5391

相关数论结论:

威尔逊定理——当且仅当p为素数时:( p -1 )! ≡ p-1 ( mod p )

这道题一开始看到的时候以为是暴力的题目,快速阶乘取模,后来其他题做不出来回头看这道题,

发现可以找规律,当p是合数的时候,P的因子全都可以在P前面的数字的因子里找到,

当p是素数的时候,(p-1)!%p = p-1,就尝试写了一下,2A;

因为4是个例外,怕还有其他例外情况,在100以内小规模跑了一下暴力。

#include<stdio.h>
#include<cmath>
using namespace std;
int judge(int n){
    int m = sqrt(n+1);
    int i;
    for(i = 2; i <= m; ++i){
        if( n % i == 0){
            return 0;
        }
    }
    if( i == m + 1)
        return n-1;
}
int main(){
    int T;
    int n;
    int tmp;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);

        if( n < 100 ){
            tmp = 1;
            for( int i = 1; i < n; ++i){
                tmp = tmp * i % n;
            }
            printf("%d\n",tmp);
        }
        else
            printf("%d\n",judge(n));
    }
}

 

hdoj 5391 Zball in Tina Town

标签:

原文地址:http://www.cnblogs.com/blueprintf/p/4734271.html

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