Zball in Tina Town(数论规律题+特判+较大数判是否为素数的正确姿势)
来源:互联网 发布:java 类写成api 编辑:程序博客网 时间:2024/05/22 16:21
Link:http://acm.hdu.edu.cn/showproblem.php?pid=5391
Zball in Tina Town
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 138 Accepted Submission(s): 98
Problem Description
Tina Town is a friendly place. People there care about each other.
Tina has a ball called zball. Zball is magic. It grows larger every day. On the first day, it becomes1 time as large as its original size. On the second day,it will become 2 times as large as the size on the first day. On the n-th day,it will become n times as large as the size on the (n-1)-th day. Tina want to know its size on the (n-1)-th day modulo n.
Tina has a ball called zball. Zball is magic. It grows larger every day. On the first day, it becomes
Input
The first line of input contains an integer T , representing the number of cases.
The followingT lines, each line contains an integer n , according to the description.
T≤105,2≤n≤109
The following
Output
For each test case, output an integer representing the answer.
Sample Input
2310
Sample Output
20
Source
BestCoder Round #51 (div.2)
这题就是求 (n−1)! mod n
如果n为合数,显然答案为0.
如果n为素数,那么由威尔逊定理可得答案为 n−1
注意有个trick为 n = 4
注意:输入的n比较大,要先打素数表再判是否为素数才不会TLE!!!
AC code:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<math.h>#include<vector>#include<map>#include<set>#include<cmath>#include<string>#include<algorithm>#include<iostream>#define LL long long #define MAXN 1000010using namespace std;const int INF=0x3f3f3f3f;const int N = 100005;const int MOD = 9901;LL n,ans;bool prime[N];int p[N];//保存素数 int cnt;void isprime()//素数筛选 { cnt = 0; memset(prime,true,sizeof(prime)); for(int i=2; i<N; i++) { if(prime[i]) { p[cnt++] = i; for(int j=i+i; j<N; j+=i) prime[j] = false; } }}bool Judge(LL A)//判断是否为素数,是素数则返回true { for(int i=0; p[i]*p[i] <= A; i++) { if(A % p[i] == 0) { return false; } } return true;}int main(){ //freopen("D:\in.txt","r",stdin); int t; isprime(); scanf("%d",&t); while(t--) { scanf("%I64d",&n); if(n==4)//特判 {printf("2\n"); } else if(!Judge(n)) { printf("0\n"); } else { printf("%I64d\n",n-1); } } return 0;}
0 0
- Zball in Tina Town(数论规律题+特判+较大数判是否为素数的正确姿势)
- HDU 5391 Zball in Tina Town(判素数)
- hdu-5391 Zball in Tina Town 找规律(求素数)
- hdu5391 Zball in Tina Town(打表找规律)
- HDU 5391-Zball in Tina Town(数论)
- hdu5391 Zball in Tina Town(素数筛法)
- HDU5391 Zball in Tina Town(埃拉托斯尼斯判断素数)
- Zball in Tina Town
- Zball in Tina Town
- BC - Zball in Tina Town (质数 + 找规律)
- HDU5391-Zball in Tina Town
- hdu5391 Zball in Tina Town
- Zball in Tina Town HDU
- Zball in Tina Town(杭电5391)
- HDOJ-5391 Zball in Tina Town(数学)
- hdu 5391 Zball in Tina Town(威尔逊定理)
- Zball in Tina Town-----(BestCoder Round #51 (div.2))
- HDU 5391 Zball in Tina Town(威尔逊定理)
- 多线程基本概论multithread
- Android源码分析之ListView
- hdoj1789Doing Homework again
- Android开发PopupWindow showAtLocation用法
- 系统函数C字符串的实现(8):strlwr与strupr
- Zball in Tina Town(数论规律题+特判+较大数判是否为素数的正确姿势)
- 矩阵快速幂模板
- Cookie的作用域
- leetcode 题解代码整理 31-35题
- Java NIO系列教程(二) Channel
- Android PopupWindow
- org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IPr
- Java内存分配和垃圾回收
- 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值