Submission #495773
Source Code Expand
#include <cassert> #include <iostream> #include <algorithm> #include <vector> #include <set> #define all(x) begin(x),end(x) #define REP(i,b,n) for(int i=static_cast<int>(b);i<static_cast<int>(n);++i) #define rep(i,n) REP(i,0,n) #define repsz(i,v) rep(i,(v).size()) using namespace std; using Int = long long; Int gcd(Int a, Int b){//{{{ while(b) swap(a %= b, b); return a; }//}}} Int lcm(Int a, Int b){ return a / gcd(a, b) * b; } Int powmod(Int b, Int e, Int m){//{{{ Int res = 1; for(b %= m; e; e >>= 1, (b *= b) %= m) if(e&1) (res *= b) %= m; return res; }//}}} vector<Int> prime_factorization(Int n){//{{{ vector<Int> res; for(Int p = 2; p <= n; ++p){ if(p * p > n) p = n; for(; n % p == 0; n /= p) res.emplace_back(p); } return res; }//}}} vector<Int> divisiors(Int n){//{{{ vector<Int> res; auto ps = prime_factorization(n); set<Int> pq; pq.emplace(1); while(!pq.empty()){ auto m = *begin(pq); pq.erase(m); res.emplace_back(m); for(auto &p : ps) if(n % (m * p) == 0) pq.emplace(m * p); } return res; }//}}} Int lambda(Int n){//{{{ Int res = 1; if(n % 8 == 0) n >>= 1; for(Int p = 2; p <= n; ++p){ if(p * p > n) p = n; if(n % p != 0) continue; Int now = p-1; for(n /= p; n % p == 0; n /= p) now *= p; res = lcm(res, now); } return res; }//}}} Int ord(const Int &n, const Int &m){//{{{ if(gcd(n, m) != 1) return 0; for(auto &d : divisiors(lambda(m))) if(powmod(n, d, m) == 1 % m) return d; assert(false); return 0; }//}}} int main(){//{{{ Int n; cin >> n; auto ps = prime_factorization(n); Int res = 1; if(adjacent_find(begin(ps), end(ps)) != end(ps)) res = -1; else for(auto &p : ps) if(res) res = lcm(res, ord(n, p-1)); cout << (res ? res : -1) << endl; return 0; }//}}} // vim:set foldmethod=marker commentstring=//%s:
Submission Info
Submission Time | |
---|---|
Task | D - Identity Function |
User | MiSawa |
Language | C++11 (GCC 4.8.1) |
Score | 100 |
Code Size | 2002 Byte |
Status | AC |
Exec Time | 37 ms |
Memory | 1040 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00_sample_00, 00_sample_01, 00_sample_02, 20_mini_00, 20_mini_01, 20_mini_02, 20_mini_03, 20_mini_04, 20_mini_05, 20_mini_06, 20_mini_07, 20_mini_08, 20_mini_09, 20_mini_10, 20_mini_11, 20_mini_12, 20_mini_13, 20_mini_14, 20_mini_15, 20_mini_16, 20_mini_17, 20_mini_18, 20_mini_19, 30_square_00, 30_square_01, 30_square_02, 30_square_03, 30_square_04, 30_square_05, 30_square_06, 30_square_07, 30_square_08, 30_square_09, 30_square_10, 30_square_11, 30_square_12, 30_square_13, 30_square_14, 30_square_15, 30_square_16, 30_square_17, 30_square_18, 30_square_19, 40_maxrandom_00, 40_maxrandom_01, 40_maxrandom_02, 40_maxrandom_03, 40_maxrandom_04, 40_maxrandom_05, 40_maxrandom_06, 40_maxrandom_07, 40_maxrandom_08, 40_maxrandom_09, 40_maxrandom_10, 40_maxrandom_11, 40_maxrandom_12, 40_maxrandom_13, 40_maxrandom_14, 40_maxrandom_15, 40_maxrandom_16, 40_maxrandom_17, 40_maxrandom_18, 40_maxrandom_19, 50_impossible_00, 50_impossible_01, 50_impossible_02, 50_impossible_03, 50_impossible_04, 50_impossible_05, 50_impossible_06, 50_impossible_07, 50_impossible_08, 50_impossible_09, 60_biganswer_00, 60_biganswer_01, 60_biganswer_02, 60_biganswer_03, 60_biganswer_04, 60_biganswer_05, 60_biganswer_06, 60_biganswer_07, 60_biganswer_08, 60_biganswer_09 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00 | AC | 37 ms | 860 KB |
00_sample_01 | AC | 33 ms | 976 KB |
00_sample_02 | AC | 32 ms | 864 KB |
20_mini_00 | AC | 31 ms | 904 KB |
20_mini_01 | AC | 33 ms | 844 KB |
20_mini_02 | AC | 34 ms | 964 KB |
20_mini_03 | AC | 33 ms | 872 KB |
20_mini_04 | AC | 32 ms | 920 KB |
20_mini_05 | AC | 33 ms | 980 KB |
20_mini_06 | AC | 33 ms | 1040 KB |
20_mini_07 | AC | 31 ms | 912 KB |
20_mini_08 | AC | 33 ms | 976 KB |
20_mini_09 | AC | 34 ms | 848 KB |
20_mini_10 | AC | 32 ms | 856 KB |
20_mini_11 | AC | 33 ms | 852 KB |
20_mini_12 | AC | 31 ms | 908 KB |
20_mini_13 | AC | 33 ms | 848 KB |
20_mini_14 | AC | 33 ms | 984 KB |
20_mini_15 | AC | 31 ms | 916 KB |
20_mini_16 | AC | 33 ms | 852 KB |
20_mini_17 | AC | 33 ms | 980 KB |
20_mini_18 | AC | 33 ms | 992 KB |
20_mini_19 | AC | 33 ms | 976 KB |
30_square_00 | AC | 35 ms | 980 KB |
30_square_01 | AC | 35 ms | 940 KB |
30_square_02 | AC | 33 ms | 844 KB |
30_square_03 | AC | 34 ms | 984 KB |
30_square_04 | AC | 34 ms | 976 KB |
30_square_05 | AC | 34 ms | 844 KB |
30_square_06 | AC | 34 ms | 844 KB |
30_square_07 | AC | 34 ms | 976 KB |
30_square_08 | AC | 33 ms | 980 KB |
30_square_09 | AC | 30 ms | 976 KB |
30_square_10 | AC | 33 ms | 1028 KB |
30_square_11 | AC | 30 ms | 980 KB |
30_square_12 | AC | 32 ms | 852 KB |
30_square_13 | AC | 33 ms | 976 KB |
30_square_14 | AC | 31 ms | 856 KB |
30_square_15 | AC | 33 ms | 972 KB |
30_square_16 | AC | 31 ms | 848 KB |
30_square_17 | AC | 35 ms | 884 KB |
30_square_18 | AC | 33 ms | 840 KB |
30_square_19 | AC | 34 ms | 848 KB |
40_maxrandom_00 | AC | 33 ms | 872 KB |
40_maxrandom_01 | AC | 33 ms | 976 KB |
40_maxrandom_02 | AC | 34 ms | 920 KB |
40_maxrandom_03 | AC | 33 ms | 920 KB |
40_maxrandom_04 | AC | 33 ms | 984 KB |
40_maxrandom_05 | AC | 33 ms | 976 KB |
40_maxrandom_06 | AC | 33 ms | 924 KB |
40_maxrandom_07 | AC | 32 ms | 868 KB |
40_maxrandom_08 | AC | 34 ms | 848 KB |
40_maxrandom_09 | AC | 34 ms | 988 KB |
40_maxrandom_10 | AC | 33 ms | 984 KB |
40_maxrandom_11 | AC | 33 ms | 980 KB |
40_maxrandom_12 | AC | 33 ms | 876 KB |
40_maxrandom_13 | AC | 34 ms | 856 KB |
40_maxrandom_14 | AC | 31 ms | 956 KB |
40_maxrandom_15 | AC | 32 ms | 892 KB |
40_maxrandom_16 | AC | 32 ms | 852 KB |
40_maxrandom_17 | AC | 34 ms | 1028 KB |
40_maxrandom_18 | AC | 35 ms | 980 KB |
40_maxrandom_19 | AC | 33 ms | 852 KB |
50_impossible_00 | AC | 35 ms | 868 KB |
50_impossible_01 | AC | 33 ms | 980 KB |
50_impossible_02 | AC | 33 ms | 984 KB |
50_impossible_03 | AC | 35 ms | 916 KB |
50_impossible_04 | AC | 36 ms | 932 KB |
50_impossible_05 | AC | 33 ms | 872 KB |
50_impossible_06 | AC | 35 ms | 988 KB |
50_impossible_07 | AC | 33 ms | 972 KB |
50_impossible_08 | AC | 35 ms | 988 KB |
50_impossible_09 | AC | 33 ms | 848 KB |
60_biganswer_00 | AC | 35 ms | 876 KB |
60_biganswer_01 | AC | 33 ms | 856 KB |
60_biganswer_02 | AC | 32 ms | 852 KB |
60_biganswer_03 | AC | 32 ms | 876 KB |
60_biganswer_04 | AC | 34 ms | 968 KB |
60_biganswer_05 | AC | 35 ms | 872 KB |
60_biganswer_06 | AC | 34 ms | 972 KB |
60_biganswer_07 | AC | 33 ms | 852 KB |
60_biganswer_08 | AC | 34 ms | 980 KB |
60_biganswer_09 | AC | 34 ms | 980 KB |