D. Modulo maths
time limit per test
0.25 s
memory limit per test
256 MB
input
standard input
output
standard output

Birute loves modular arithmetics, but hates long problem statements.

D. Modulo maths

Given n, find f(n).

Input

The first line contains the number of test cases T (T ≤ 50). In the following T lines there are integer values of number n (1 ≤ n ≤ 10007).

Output

For each test case output one line containing “Case #tc: num”, where tc is the number of the test case (starting from 1) and num is the value of f(n).

Examples
Input
2
1
2
Output
Case #1: 1
Case #2: 0
Note

Fun fact: 1 is neither prime nor composite number.

虽然是D题,但是有点水。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <set>
 6 #define N 10007
 7 // #define M 2005
 8 // #define inf 8e18
 9 #define ll long long int
10 using namespace std;
11 int k[N];
12 void prime(){
13   memset(k,0,sizeof(k));
14   for(int i=2;i<=N;i++){
15     if(!k[i]){
16       for(int j=2;j*i<=N;j++)
17         k[i*j]=1;
18     }
19   }
20 }
21 ll pow_mod(ll a,ll b,ll mo)
22 {
23     ll ans=1;
24     a%=mo;
25     while (b){
26         if (b&1)
27           ans=(ans*a)%mo;
28         b>>=1;
29         a=a*a%mo;
30     }
31     return ans%mo;
32 }
33 int main(){
34     ll n,m;
35     cin>>n;
36     int t=1;
37     prime();
38     while(n--){
39       cin>>m;
40       if(m==1)
41         cout<<"Case #"<<t<<": "<<1<<endl;
42       else if(!k[m]){
43         cout<<"Case #"<<t<<": "<<pow_mod(2,m-1,m)<<endl;
44       }else{
45         cout<<"Case #"<<t<<": "<<(((m-1)%m)*((m-1)%m))%m<<endl;
46       }
47       t++;
48     }
49   return 0;
50 }

 

相关文章:

  • 2022-12-23
  • 2021-07-07
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2021-08-12
  • 2021-12-16
猜你喜欢
  • 2022-03-01
  • 2021-05-30
  • 2021-07-24
  • 2022-01-20
  • 2021-12-21
  • 2022-02-22
  • 2022-02-01
相关资源
相似解决方案