Tina Town 是一个善良友好的地方,这里的每一个人都互相关心。
Tina有一个球,它的名字叫zball。zball很神奇,它会每天变大。在第一天的时候,它会变大11倍。在第二天的时候,它会变大22倍。在第nn天的时候,它会变大nn倍。
zball原来的体积是11。Tina想知道,zball在第n-1n−1天时的体积对nn取模是多大呢?
Tina是一个蠢蠢的女孩子,当然不会算啦,所以她请你帮她算出这个答案呢。
第一行一个正整数TT,表示数据组数
接下来TT行,每行一个正整数nn,意义如题面所述
T \leq 10^5,2 \leq n \leq 10^9T≤105,2≤n≤109
对于每组数据,输出一个正整数,表示答案。
2 3 10
2 0
这题就是求 (n-1)!modn(n−1)! mod n
如果nn为合数,显然答案为0.
如果nn为素数,那么由威尔逊定理可得答案为 n-1n−1
注意有个trick为 nn = 4
打个表找找规律就好了。。。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<vector> 5 #include<set> 6 #include<map> 7 #include<cmath> 8 #include<stdlib.h> 9 using namespace std; 10 int n; 11 12 13 int main() 14 { 15 int t; 16 scanf("%d",&t); 17 while(t--) 18 { 19 scanf("%d",&n); 20 21 if(n==4) 22 { 23 printf("2\n"); 24 continue; 25 } 26 int flag=0; 27 for(int i=2;i*i<=n;i++) 28 { 29 if(n%i==0) 30 { 31 flag=1; 32 break; 33 } 34 } 35 if(flag==0) 36 printf("%d\n",n-1); 37 else 38 printf("0\n"); 39 } 40 41 return 0; 42 }