HDU 5391 Zball in Tina Town

Zball in Tina Town

Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)

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 becomes 1 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.

Input

The first line of input contains an integer T, representing the number of cases.

The following T lines, each line contains an integer n, according to the description.
T≤105,2≤n≤109

Output

For each test case, output an integer representing the answer.

Sample Input

2
3
10

Sample Output

2
0

题意:

要求我们求出(n - 1)mod n 的值。

思路:

由于威尔逊定理可得( p - 1 )! ≡ 1﹡( p -1 ) ≡ -1 ( mod p )所以的话就可以知道,假如p是质数的话,那么取模后就是-1,转换成正数就是n-1了,但是在4的时候需要特判一下,因为4是合数,但是答案却不等于0,

#include 
#include 
#include 
using namespace std;
bool is_prime(int n) {
    if (n == 1 || n == 0) return false;
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) return false;
    }
    return true;
}
int main() {
    int t, n;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        if (n == 4) printf("2\n");
        else if (is_prime(n)) printf("%d\n", n - 1);
        else printf("0\n");
    }
    return 0;
}

你可能感兴趣的:(HDU)