HDU 5391 Zball in Tina Town(威尔逊定理)
题意: 给出一个n,求(n-1)!%n 等于多少。
威尔逊定理: 当且仅当n为素数时:( n -1 )! ≡ -1 ( mod n )
题解:根据威尔逊定理,p为素数答案是n-1。思考非素数,其n能有前面的数相乘得到,那么答案是0。但是4答案例外是2。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
const int N = 1e5+10;
typedef long long LL;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i, n;
int s = 1;
scanf("%d",&n);
for(i = 2; i*i <= n; ++i)
{
if(!(n % i))
{
s = 0;
break;
}
}
if(n == 4)
puts("2");
else if(s)
printf("%d\n",n-1);
else
puts("0");
}
return 0;
}