drei

模拟9 T3

(COGS上也有,链接http://218.28.19.228/cogs/problem/problem.php?pid=1428)

题目描述

  输入a,p,求最小正整数x,使得a^x mod p = 1。

分析

  神奇的欧拉定理(对于gcd(a,n)= 1)

      

  特殊情况单独判

  不特殊的话,先求phi(p)

  之后,ans一定是p的因数(这个不会证明T^T)

  于是,就把phi(p)一个质因数一个质因数的试试,能除出来就除出来,剩的就是最小的。

  (无视那个逗比的素数表,那只是模仿ZZX的习惯而已←_←)

  1 /**************************************************
  2           Origin: Simulation 9 Problem 3
  3           Author: Xue Zhonghao
  4           Data: 2014-4-10 17:52:46 
  5           State: Accepted
  6 **************************************************/
  7 #include<cstdio>
  8 #include<cmath>
  9 #include<iostream>
 10 #include<fstream>
 11 using namespace std;
 12 ifstream fin("drei.in");
 13 ofstream fout("drei.out");
 14 
 15 #define LL unsigned long long
 16 
 17 int A;
 18 
 19 int prime[3401] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 
 20 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 
 21 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 
 22 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 
 23 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 
 24 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 
 25 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 
 26 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 
 27 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 
 28 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 
 29 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 
 30 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 
 31 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 
 32 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 
 33 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 
 34 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 
 35 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 
 36 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 
 37 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 
 38 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 
 39 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 
 40 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 
 41 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 
 42 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 
 43 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 
 44 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 
 45 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 
 46 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 
 47 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 
 48 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 
 49 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 
 50 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 
 51 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 
 52 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 
 53 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 
 54 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 
 55 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 
 56 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 
 57 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 
 58 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 
 59 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 
 60 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 
 61 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 
 62 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 
 63 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 
 64 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 
 65 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 
 66 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 
 67 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 
 68 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 
 69 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 
 70 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 
 71 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 
 72 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 
 73 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 
 74 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 
 75 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 
 76 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 
 77 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 
 78 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 
 79 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 
 80 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 
 81 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 
 82 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 
 83 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 
 84 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 
 85 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 
 86 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 
 87 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 
 88 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 
 89 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 
 90 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 
 91 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 
 92 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 
 93 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 
 94 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 
 95 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 
 96 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 
 97 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 
 98 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 
 99 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 
100 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 
101 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 
102 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 
103 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 
104 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 
105 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 
106 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 
107 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 
108 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 
109 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 
110 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 
111 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 
112 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 
113 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 
114 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 
115 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 
116 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 
117 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 
118 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 
119 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 
120 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 
121 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 
122 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 
123 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 
124 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 
125 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 
126 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 
127 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 
128 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 
129 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 
130 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 
131 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 
132 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 
133 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 
134 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 
135 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 
136 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 
137 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 
138 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 
139 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 
140 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 
141 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973, 10007, 
142 10009, 10037, 10039, 10061, 10067, 10069, 10079, 10091, 10093, 10099, 
143 10103, 10111, 10133, 10139, 10141, 10151, 10159, 10163, 10169, 10177, 
144 10181, 10193, 10211, 10223, 10243, 10247, 10253, 10259, 10267, 10271, 
145 10273, 10289, 10301, 10303, 10313, 10321, 10331, 10333, 10337, 10343, 
146 10357, 10369, 10391, 10399, 10427, 10429, 10433, 10453, 10457, 10459, 
147 10463, 10477, 10487, 10499, 10501, 10513, 10529, 10531, 10559, 10567, 
148 10589, 10597, 10601, 10607, 10613, 10627, 10631, 10639, 10651, 10657, 
149 10663, 10667, 10687, 10691, 10709, 10711, 10723, 10729, 10733, 10739, 
150 10753, 10771, 10781, 10789, 10799, 10831, 10837, 10847, 10853, 10859, 
151 10861, 10867, 10883, 10889, 10891, 10903, 10909, 10937, 10939, 10949, 
152 10957, 10973, 10979, 10987, 10993, 11003, 11027, 11047, 11057, 11059, 
153 11069, 11071, 11083, 11087, 11093, 11113, 11117, 11119, 11131, 11149, 
154 11159, 11161, 11171, 11173, 11177, 11197, 11213, 11239, 11243, 11251, 
155 11257, 11261, 11273, 11279, 11287, 11299, 11311, 11317, 11321, 11329, 
156 11351, 11353, 11369, 11383, 11393, 11399, 11411, 11423, 11437, 11443, 
157 11447, 11467, 11471, 11483, 11489, 11491, 11497, 11503, 11519, 11527, 
158 11549, 11551, 11579, 11587, 11593, 11597, 11617, 11621, 11633, 11657, 
159 11677, 11681, 11689, 11699, 11701, 11717, 11719, 11731, 11743, 11777, 
160 11779, 11783, 11789, 11801, 11807, 11813, 11821, 11827, 11831, 11833, 
161 11839, 11863, 11867, 11887, 11897, 11903, 11909, 11923, 11927, 11933, 
162 11939, 11941, 11953, 11959, 11969, 11971, 11981, 11987, 12007, 12011, 
163 12037, 12041, 12043, 12049, 12071, 12073, 12097, 12101, 12107, 12109, 
164 12113, 12119, 12143, 12149, 12157, 12161, 12163, 12197, 12203, 12211, 
165 12227, 12239, 12241, 12251, 12253, 12263, 12269, 12277, 12281, 12289, 
166 12301, 12323, 12329, 12343, 12347, 12373, 12377, 12379, 12391, 12401, 
167 12409, 12413, 12421, 12433, 12437, 12451, 12457, 12473, 12479, 12487, 
168 12491, 12497, 12503, 12511, 12517, 12527, 12539, 12541, 12547, 12553, 
169 12569, 12577, 12583, 12589, 12601, 12611, 12613, 12619, 12637, 12641, 
170 12647, 12653, 12659, 12671, 12689, 12697, 12703, 12713, 12721, 12739, 
171 12743, 12757, 12763, 12781, 12791, 12799, 12809, 12821, 12823, 12829, 
172 12841, 12853, 12889, 12893, 12899, 12907, 12911, 12917, 12919, 12923, 
173 12941, 12953, 12959, 12967, 12973, 12979, 12983, 13001, 13003, 13007, 
174 13009, 13033, 13037, 13043, 13049, 13063, 13093, 13099, 13103, 13109, 
175 13121, 13127, 13147, 13151, 13159, 13163, 13171, 13177, 13183, 13187, 
176 13217, 13219, 13229, 13241, 13249, 13259, 13267, 13291, 13297, 13309, 
177 13313, 13327, 13331, 13337, 13339, 13367, 13381, 13397, 13399, 13411, 
178 13417, 13421, 13441, 13451, 13457, 13463, 13469, 13477, 13487, 13499, 
179 13513, 13523, 13537, 13553, 13567, 13577, 13591, 13597, 13613, 13619, 
180 13627, 13633, 13649, 13669, 13679, 13681, 13687, 13691, 13693, 13697, 
181 13709, 13711, 13721, 13723, 13729, 13751, 13757, 13759, 13763, 13781, 
182 13789, 13799, 13807, 13829, 13831, 13841, 13859, 13873, 13877, 13879, 
183 13883, 13901, 13903, 13907, 13913, 13921, 13931, 13933, 13963, 13967, 
184 13997, 13999, 14009, 14011, 14029, 14033, 14051, 14057, 14071, 14081, 
185 14083, 14087, 14107, 14143, 14149, 14153, 14159, 14173, 14177, 14197, 
186 14207, 14221, 14243, 14249, 14251, 14281, 14293, 14303, 14321, 14323, 
187 14327, 14341, 14347, 14369, 14387, 14389, 14401, 14407, 14411, 14419, 
188 14423, 14431, 14437, 14447, 14449, 14461, 14479, 14489, 14503, 14519, 
189 14533, 14537, 14543, 14549, 14551, 14557, 14561, 14563, 14591, 14593, 
190 14621, 14627, 14629, 14633, 14639, 14653, 14657, 14669, 14683, 14699, 
191 14713, 14717, 14723, 14731, 14737, 14741, 14747, 14753, 14759, 14767, 
192 14771, 14779, 14783, 14797, 14813, 14821, 14827, 14831, 14843, 14851, 
193 14867, 14869, 14879, 14887, 14891, 14897, 14923, 14929, 14939, 14947, 
194 14951, 14957, 14969, 14983, 15013, 15017, 15031, 15053, 15061, 15073, 
195 15077, 15083, 15091, 15101, 15107, 15121, 15131, 15137, 15139, 15149, 
196 15161, 15173, 15187, 15193, 15199, 15217, 15227, 15233, 15241, 15259, 
197 15263, 15269, 15271, 15277, 15287, 15289, 15299, 15307, 15313, 15319, 
198 15329, 15331, 15349, 15359, 15361, 15373, 15377, 15383, 15391, 15401, 
199 15413, 15427, 15439, 15443, 15451, 15461, 15467, 15473, 15493, 15497, 
200 15511, 15527, 15541, 15551, 15559, 15569, 15581, 15583, 15601, 15607, 
201 15619, 15629, 15641, 15643, 15647, 15649, 15661, 15667, 15671, 15679, 
202 15683, 15727, 15731, 15733, 15737, 15739, 15749, 15761, 15767, 15773, 
203 15787, 15791, 15797, 15803, 15809, 15817, 15823, 15859, 15877, 15881, 
204 15887, 15889, 15901, 15907, 15913, 15919, 15923, 15937, 15959, 15971, 
205 15973, 15991, 16001, 16007, 16033, 16057, 16061, 16063, 16067, 16069, 
206 16073, 16087, 16091, 16097, 16103, 16111, 16127, 16139, 16141, 16183, 
207 16187, 16189, 16193, 16217, 16223, 16229, 16231, 16249, 16253, 16267, 
208 16273, 16301, 16319, 16333, 16339, 16349, 16361, 16363, 16369, 16381, 
209 16411, 16417, 16421, 16427, 16433, 16447, 16451, 16453, 16477, 16481, 
210 16487, 16493, 16519, 16529, 16547, 16553, 16561, 16567, 16573, 16603, 
211 16607, 16619, 16631, 16633, 16649, 16651, 16657, 16661, 16673, 16691, 
212 16693, 16699, 16703, 16729, 16741, 16747, 16759, 16763, 16787, 16811, 
213 16823, 16829, 16831, 16843, 16871, 16879, 16883, 16889, 16901, 16903, 
214 16921, 16927, 16931, 16937, 16943, 16963, 16979, 16981, 16987, 16993, 
215 17011, 17021, 17027, 17029, 17033, 17041, 17047, 17053, 17077, 17093, 
216 17099, 17107, 17117, 17123, 17137, 17159, 17167, 17183, 17189, 17191, 
217 17203, 17207, 17209, 17231, 17239, 17257, 17291, 17293, 17299, 17317, 
218 17321, 17327, 17333, 17341, 17351, 17359, 17377, 17383, 17387, 17389, 
219 17393, 17401, 17417, 17419, 17431, 17443, 17449, 17467, 17471, 17477, 
220 17483, 17489, 17491, 17497, 17509, 17519, 17539, 17551, 17569, 17573, 
221 17579, 17581, 17597, 17599, 17609, 17623, 17627, 17657, 17659, 17669, 
222 17681, 17683, 17707, 17713, 17729, 17737, 17747, 17749, 17761, 17783, 
223 17789, 17791, 17807, 17827, 17837, 17839, 17851, 17863, 17881, 17891, 
224 17903, 17909, 17911, 17921, 17923, 17929, 17939, 17957, 17959, 17971, 
225 17977, 17981, 17987, 17989, 18013, 18041, 18043, 18047, 18049, 18059, 
226 18061, 18077, 18089, 18097, 18119, 18121, 18127, 18131, 18133, 18143, 
227 18149, 18169, 18181, 18191, 18199, 18211, 18217, 18223, 18229, 18233, 
228 18251, 18253, 18257, 18269, 18287, 18289, 18301, 18307, 18311, 18313, 
229 18329, 18341, 18353, 18367, 18371, 18379, 18397, 18401, 18413, 18427, 
230 18433, 18439, 18443, 18451, 18457, 18461, 18481, 18493, 18503, 18517, 
231 18521, 18523, 18539, 18541, 18553, 18583, 18587, 18593, 18617, 18637, 
232 18661, 18671, 18679, 18691, 18701, 18713, 18719, 18731, 18743, 18749, 
233 18757, 18773, 18787, 18793, 18797, 18803, 18839, 18859, 18869, 18899, 
234 18911, 18913, 18917, 18919, 18947, 18959, 18973, 18979, 19001, 19009, 
235 19013, 19031, 19037, 19051, 19069, 19073, 19079, 19081, 19087, 19121, 
236 19139, 19141, 19157, 19163, 19181, 19183, 19207, 19211, 19213, 19219, 
237 19231, 19237, 19249, 19259, 19267, 19273, 19289, 19301, 19309, 19319, 
238 19333, 19373, 19379, 19381, 19387, 19391, 19403, 19417, 19421, 19423, 
239 19427, 19429, 19433, 19441, 19447, 19457, 19463, 19469, 19471, 19477, 
240 19483, 19489, 19501, 19507, 19531, 19541, 19543, 19553, 19559, 19571, 
241 19577, 19583, 19597, 19603, 19609, 19661, 19681, 19687, 19697, 19699, 
242 19709, 19717, 19727, 19739, 19751, 19753, 19759, 19763, 19777, 19793, 
243 19801, 19813, 19819, 19841, 19843, 19853, 19861, 19867, 19889, 19891, 
244 19913, 19919, 19927, 19937, 19949, 19961, 19963, 19973, 19979, 19991, 
245 19993, 19997, 20011, 20021, 20023, 20029, 20047, 20051, 20063, 20071, 
246 20089, 20101, 20107, 20113, 20117, 20123, 20129, 20143, 20147, 20149, 
247 20161, 20173, 20177, 20183, 20201, 20219, 20231, 20233, 20249, 20261, 
248 20269, 20287, 20297, 20323, 20327, 20333, 20341, 20347, 20353, 20357, 
249 20359, 20369, 20389, 20393, 20399, 20407, 20411, 20431, 20441, 20443, 
250 20477, 20479, 20483, 20507, 20509, 20521, 20533, 20543, 20549, 20551, 
251 20563, 20593, 20599, 20611, 20627, 20639, 20641, 20663, 20681, 20693, 
252 20707, 20717, 20719, 20731, 20743, 20747, 20749, 20753, 20759, 20771, 
253 20773, 20789, 20807, 20809, 20849, 20857, 20873, 20879, 20887, 20897, 
254 20899, 20903, 20921, 20929, 20939, 20947, 20959, 20963, 20981, 20983, 
255 21001, 21011, 21013, 21017, 21019, 21023, 21031, 21059, 21061, 21067, 
256 21089, 21101, 21107, 21121, 21139, 21143, 21149, 21157, 21163, 21169, 
257 21179, 21187, 21191, 21193, 21211, 21221, 21227, 21247, 21269, 21277, 
258 21283, 21313, 21317, 21319, 21323, 21341, 21347, 21377, 21379, 21383, 
259 21391, 21397, 21401, 21407, 21419, 21433, 21467, 21481, 21487, 21491, 
260 21493, 21499, 21503, 21517, 21521, 21523, 21529, 21557, 21559, 21563, 
261 21569, 21577, 21587, 21589, 21599, 21601, 21611, 21613, 21617, 21647, 
262 21649, 21661, 21673, 21683, 21701, 21713, 21727, 21737, 21739, 21751, 
263 21757, 21767, 21773, 21787, 21799, 21803, 21817, 21821, 21839, 21841, 
264 21851, 21859, 21863, 21871, 21881, 21893, 21911, 21929, 21937, 21943, 
265 21961, 21977, 21991, 21997, 22003, 22013, 22027, 22031, 22037, 22039, 
266 22051, 22063, 22067, 22073, 22079, 22091, 22093, 22109, 22111, 22123, 
267 22129, 22133, 22147, 22153, 22157, 22159, 22171, 22189, 22193, 22229, 
268 22247, 22259, 22271, 22273, 22277, 22279, 22283, 22291, 22303, 22307, 
269 22343, 22349, 22367, 22369, 22381, 22391, 22397, 22409, 22433, 22441, 
270 22447, 22453, 22469, 22481, 22483, 22501, 22511, 22531, 22541, 22543, 
271 22549, 22567, 22571, 22573, 22613, 22619, 22621, 22637, 22639, 22643, 
272 22651, 22669, 22679, 22691, 22697, 22699, 22709, 22717, 22721, 22727, 
273 22739, 22741, 22751, 22769, 22777, 22783, 22787, 22807, 22811, 22817, 
274 22853, 22859, 22861, 22871, 22877, 22901, 22907, 22921, 22937, 22943, 
275 22961, 22963, 22973, 22993, 23003, 23011, 23017, 23021, 23027, 23029, 
276 23039, 23041, 23053, 23057, 23059, 23063, 23071, 23081, 23087, 23099, 
277 23117, 23131, 23143, 23159, 23167, 23173, 23189, 23197, 23201, 23203, 
278 23209, 23227, 23251, 23269, 23279, 23291, 23293, 23297, 23311, 23321, 
279 23327, 23333, 23339, 23357, 23369, 23371, 23399, 23417, 23431, 23447, 
280 23459, 23473, 23497, 23509, 23531, 23537, 23539, 23549, 23557, 23561, 
281 23563, 23567, 23581, 23593, 23599, 23603, 23609, 23623, 23627, 23629, 
282 23633, 23663, 23669, 23671, 23677, 23687, 23689, 23719, 23741, 23743, 
283 23747, 23753, 23761, 23767, 23773, 23789, 23801, 23813, 23819, 23827, 
284 23831, 23833, 23857, 23869, 23873, 23879, 23887, 23893, 23899, 23909, 
285 23911, 23917, 23929, 23957, 23971, 23977, 23981, 23993, 24001, 24007, 
286 24019, 24023, 24029, 24043, 24049, 24061, 24071, 24077, 24083, 24091, 
287 24097, 24103, 24107, 24109, 24113, 24121, 24133, 24137, 24151, 24169, 
288 24179, 24181, 24197, 24203, 24223, 24229, 24239, 24247, 24251, 24281, 
289 24317, 24329, 24337, 24359, 24371, 24373, 24379, 24391, 24407, 24413, 
290 24419, 24421, 24439, 24443, 24469, 24473, 24481, 24499, 24509, 24517, 
291 24527, 24533, 24547, 24551, 24571, 24593, 24611, 24623, 24631, 24659, 
292 24671, 24677, 24683, 24691, 24697, 24709, 24733, 24749, 24763, 24767, 
293 24781, 24793, 24799, 24809, 24821, 24841, 24847, 24851, 24859, 24877, 
294 24889, 24907, 24917, 24919, 24923, 24943, 24953, 24967, 24971, 24977, 
295 24979, 24989, 25013, 25031, 25033, 25037, 25057, 25073, 25087, 25097, 
296 25111, 25117, 25121, 25127, 25147, 25153, 25163, 25169, 25171, 25183, 
297 25189, 25219, 25229, 25237, 25243, 25247, 25253, 25261, 25301, 25303, 
298 25307, 25309, 25321, 25339, 25343, 25349, 25357, 25367, 25373, 25391, 
299 25409, 25411, 25423, 25439, 25447, 25453, 25457, 25463, 25469, 25471, 
300 25523, 25537, 25541, 25561, 25577, 25579, 25583, 25589, 25601, 25603, 
301 25609, 25621, 25633, 25639, 25643, 25657, 25667, 25673, 25679, 25693, 
302 25703, 25717, 25733, 25741, 25747, 25759, 25763, 25771, 25793, 25799, 
303 25801, 25819, 25841, 25847, 25849, 25867, 25873, 25889, 25903, 25913, 
304 25919, 25931, 25933, 25939, 25943, 25951, 25969, 25981, 25997, 25999, 
305 26003, 26017, 26021, 26029, 26041, 26053, 26083, 26099, 26107, 26111, 
306 26113, 26119, 26141, 26153, 26161, 26171, 26177, 26183, 26189, 26203, 
307 26209, 26227, 26237, 26249, 26251, 26261, 26263, 26267, 26293, 26297, 
308 26309, 26317, 26321, 26339, 26347, 26357, 26371, 26387, 26393, 26399, 
309 26407, 26417, 26423, 26431, 26437, 26449, 26459, 26479, 26489, 26497, 
310 26501, 26513, 26539, 26557, 26561, 26573, 26591, 26597, 26627, 26633, 
311 26641, 26647, 26669, 26681, 26683, 26687, 26693, 26699, 26701, 26711, 
312 26713, 26717, 26723, 26729, 26731, 26737, 26759, 26777, 26783, 26801, 
313 26813, 26821, 26833, 26839, 26849, 26861, 26863, 26879, 26881, 26891, 
314 26893, 26903, 26921, 26927, 26947, 26951, 26953, 26959, 26981, 26987, 
315 26993, 27011, 27017, 27031, 27043, 27059, 27061, 27067, 27073, 27077, 
316 27091, 27103, 27107, 27109, 27127, 27143, 27179, 27191, 27197, 27211, 
317 27239, 27241, 27253, 27259, 27271, 27277, 27281, 27283, 27299, 27329, 
318 27337, 27361, 27367, 27397, 27407, 27409, 27427, 27431, 27437, 27449, 
319 27457, 27479, 27481, 27487, 27509, 27527, 27529, 27539, 27541, 27551, 
320 27581, 27583, 27611, 27617, 27631, 27647, 27653, 27673, 27689, 27691, 
321 27697, 27701, 27733, 27737, 27739, 27743, 27749, 27751, 27763, 27767, 
322 27773, 27779, 27791, 27793, 27799, 27803, 27809, 27817, 27823, 27827, 
323 27847, 27851, 27883, 27893, 27901, 27917, 27919, 27941, 27943, 27947, 
324 27953, 27961, 27967, 27983, 27997, 28001, 28019, 28027, 28031, 28051, 
325 28057, 28069, 28081, 28087, 28097, 28099, 28109, 28111, 28123, 28151, 
326 28163, 28181, 28183, 28201, 28211, 28219, 28229, 28277, 28279, 28283, 
327 28289, 28297, 28307, 28309, 28319, 28349, 28351, 28387, 28393, 28403, 
328 28409, 28411, 28429, 28433, 28439, 28447, 28463, 28477, 28493, 28499, 
329 28513, 28517, 28537, 28541, 28547, 28549, 28559, 28571, 28573, 28579, 
330 28591, 28597, 28603, 28607, 28619, 28621, 28627, 28631, 28643, 28649, 
331 28657, 28661, 28663, 28669, 28687, 28697, 28703, 28711, 28723, 28729, 
332 28751, 28753, 28759, 28771, 28789, 28793, 28807, 28813, 28817, 28837, 
333 28843, 28859, 28867, 28871, 28879, 28901, 28909, 28921, 28927, 28933, 
334 28949, 28961, 28979, 29009, 29017, 29021, 29023, 29027, 29033, 29059, 
335 29063, 29077, 29101, 29123, 29129, 29131, 29137, 29147, 29153, 29167, 
336 29173, 29179, 29191, 29201, 29207, 29209, 29221, 29231, 29243, 29251, 
337 29269, 29287, 29297, 29303, 29311, 29327, 29333, 29339, 29347, 29363, 
338 29383, 29387, 29389, 29399, 29401, 29411, 29423, 29429, 29437, 29443, 
339 29453, 29473, 29483, 29501, 29527, 29531, 29537, 29567, 29569, 29573, 
340 29581, 29587, 29599, 29611, 29629, 29633, 29641, 29663, 29669, 29671, 
341 29683, 29717, 29723, 29741, 29753, 29759, 29761, 29789, 29803, 29819, 
342 29833, 29837, 29851, 29863, 29867, 29873, 29879, 29881, 29917, 29921, 
343 29927, 29947, 29959, 29983, 29989, 30011, 30013, 30029, 30047, 30059, 
344 30071, 30089, 30091, 30097, 30103, 30109, 30113, 30119, 30133, 30137, 
345 30139, 30161, 30169, 30181, 30187, 30197, 30203, 30211, 30223, 30241, 
346 30253, 30259, 30269, 30271, 30293, 30307, 30313, 30319, 30323, 30341, 
347 30347, 30367, 30389, 30391, 30403, 30427, 30431, 30449, 30467, 30469, 
348 30491, 30493, 30497, 30509, 30517, 30529, 30539, 30553, 30557, 30559, 
349 30577, 30593, 30631, 30637, 30643, 30649, 30661, 30671, 30677, 30689, 
350 30697, 30703, 30707, 30713, 30727, 30757, 30763, 30773, 30781, 30803, 
351 30809, 30817, 30829, 30839, 30841, 30851, 30853, 30859, 30869, 30871, 
352 30881, 30893, 30911, 30931, 30937, 30941, 30949, 30971, 30977, 30983, 
353 31013, 31019, 31033, 31039, 31051, 31063, 31069, 31079, 31081, 31091, 
354 31121, 31123, 31139, 31147, 31151, 31153, 31159, 31177, 31181, 31183, 
355 31189, 31193, 31219, 31223, 31231, 31237, 31247, 31249, 31253, 31259, 
356 31267, 31271, 31277, 31307, 31319, 31321, 31327, 31333, 31337, 31357, 
357 31379, 31387, 31391, 31393, 31397, 31469, 31477, 31481, 31489, 31511, 
358 31513, 31517, 31531, 31541, 31543, 31547, 31567, 31573, 31583, 31601, 
359 31607};
360 
361 int phi(int x) {
362     if(x == 1) return 1;
363     int ans = x;
364     int i;
365     for(i = 0; i < 3401 && x > 1; ++i)
366       if(x % prime[i] == 0) {
367         ans /= prime[i];
368         ans *= prime[i] - 1;
369         do x /= prime[i]; while (x % prime[i] == 0);
370       }
371     if(x != 1) {
372       ans /= x;
373       ans *= x - 1;
374     }
375     return ans;
376 }
377 
378 bool can(int n, int p) {
379     LL a = 1, b = A;
380     while(n) {
381       if(n & 1) a = a * b % p;
382       b = b * b % p;
383       n >>= 1;
384     }
385     if(a == 1) return true;
386     else return false;
387 }
388 
389 int process(int x, int p) {
390     int k = x;
391     for(int i = 0; i < 3401 && prime[i] <= x; ++i)
392       if(x % prime[i] == 0) {
393         while(k % prime[i] == 0 && can(k/prime[i], p)) k /= prime[i];
394         do x /= prime[i]; while(x % prime[i] == 0);
395       }
396     return k;
397 }
398 
399 int gcd(int a, int b) {
400     return b == 0 ? a : gcd(b, a%b);
401 }
402 
403 int main(void)
404 {
405     int T, P;
406     int x, ans;
407     fin>>T;
408     for(int i = 0; i < T; ++i) {
409       fin>>A>>P;
410       if(A % P == 1) {
411         fout<<'1'<<endl;
412         continue;
413       }
414       if(P == 1 || A == 0 || gcd(A, P) > 1) {
415         fout<<"-1"<<endl;
416         continue;
417       }
418       x = phi(P);
419       ans = process(x, P);
420       fout<<ans<<endl;
421     }
422     return 0;
423 }

 

转载于:https://www.cnblogs.com/xuezhonghao/p/3657408.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《MySQL——group by使用tips》

1、如果对group by语句结果没有排序要求&#xff0c;在语句后面加order by null 2、尽量让group by 过程用上索引&#xff0c;确认方法是explain结果里没有Using temporary 和Using filesort 3、如果group by 需要统计的数据量不大&#xff0c;尽量只使用内存临时表&#xff…

css中变量_CSS中的变量

css中变量CSS | 变数 (CSS | Variables) CSS variables allow you to create reusable values that can be used throughout a CSS document. CSS变量允许您创建可在CSS文档中使用的可重用值。 In CSS variable, function var() allows CSS variables to be accessed. 在CSS变…

位图像素的颜色 携程编程大赛hdu

位图像素的颜色 Time Limit: 2000/1000 MS (Java/Others) MemoryLimit: 32768/32768 K (Java/Others) Total Submission(s): 0 Accepted Submission(s): 0 Problem Description 有一个在位图上画出矩形程序&#xff0c;一开始位图都被初始化为白色&#xff08;RGB颜色表示…

《MySQL——InnoDB与Memory以及临时表》

InooDB与Memory 数据组织方式不同&#xff1a; InnoDB引擎把数据放在主键索引上&#xff0c;其他索引上保存的是主键id。为索引组织表Memory引擎把数据单独存放&#xff0c;索引上保存数据位置。为堆组织表 典型不同处&#xff1a; 1、InnoDB表的数据总是有序存放的&#x…

Oracle 用户 profile 属性 转

--查看profile 内容 select * from dba_profiles where profilePF_EAGLE; --查看用户的profiles select username,profile from dba_users; --查看是否启用动态资源限制参数 SHOW PARAMETER RESOURCE_LIMIT; --启用限制 ALTER SYSTEM SET RESOURCE_LIMITTRUE SCOPEBOTH; --创建…

CUL8R的完整形式是什么?

CUL8R&#xff1a;稍后再见 (CUL8R: See You Later) CUL8R is an abbreviation of "See You Later". CUL8R是“稍后见”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo M…

SuperSpider——打造功能强大的爬虫利器

SuperSpider——打造功能强大的爬虫利器 博文作者&#xff1a;加菲 发布日期&#xff1a;2013-12-11 阅读次数&#xff1a;4506 博文内容&#xff1a; 1.爬虫的介绍 图1-1 爬虫&#xff08;spider) 网络爬虫(web spider)是一个自动的通过网络抓取互联网上的网页的程序&#xf…

《MySQL——关于grant赋权以及flush privileges》

先上总结图&#xff1a; 对于赋予权限或者收回权限还是创建用户&#xff0c;都会涉及两个操作&#xff1a; 1、磁盘&#xff0c;mysql.user表&#xff0c;用户行所有表示权限的字段的值的修改 2、内存&#xff0c;acl_users找到用户对应的对象&#xff0c;将access值修改 g…

对Spring的理解

1、Spring实现了工厂模式的工厂类&#xff0c;这个类名为BeanFactory实际上是一个接口&#xff0c;在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类&#xff0c;在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。…

Java中的null是什么?

As we know null is an important concept in every language not only in Java but here we will study various factors regarding null. 我们知道null在每种语言中都是重要的概念&#xff0c;不仅在Java中&#xff0c;在这里我们还将研究有关null的各种因素。 null is a ver…

《MySQL——分区表小记》

分区表的组织形式 以年份为分割方式&#xff0c;对表进行分割&#xff1a; CREATE TABLE t (ftime datetime NOT NULL,c int(11) DEFAULT NULL,KEY (ftime) ) ENGINEInnoDB DEFAULT CHARSETlatin1 PARTITION BY RANGE (YEAR(ftime)) (PARTITION p_2017 VALUES LESS THAN (201…

实战Windows下安装boost

Boost大部分组件无需编译可直接包含头文件使用&#xff0c;但还有一些库需要编译成静态库或动态库才能使用。可使用下文将提到的bjam工具&#xff1a;bjam --show-libraries 查看必须编译才能使用的库。 编译安装环境&#xff1a;Win7&#xff0c;VS2008(msvc-9.0) 1. 下载boos…

postgresq dur_DUR的完整形式是什么?

postgresq dur杜尔(DUR)&#xff1a;您还记得吗&#xff1f; (DUR?: Do You Remember?) DUR? is an abbreviation of "Do You Remember?". DUR&#xff1f; 是“您还记得吗&#xff1f;”的缩写。 。 It is an expression, which is commonly used in messaging…

gsettings-desktop-schemas : 破坏: mutter (< 3.31.4) 但是 3.28.4-0ubuntu18.04.2 正要被安装解决方案

完整报错&#xff1a; dyydyy-Lenovo-ThinkBook-14-IIL:~$ sudo apt install build-essential 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版&#xff0c;这也许是 因…

程序内存检测

本文参考自&#xff1a;http://www.cnblogs.com/hebeiDGL/p/3410188.html static System.Windows.Threading.DispatcherTimer dispacherTimer;static string total "DeviceTotalMemory";static string current "ApplicationCurrentMemoryUsage";static s…

动态规划天天练1

本来很久以前就打算每天练一道动态规划题的&#xff0c;但每每由于作业太多而中断&#xff0c;现在终于停课了......废话不多说&#xff0c;第一道题就给了我迎头一棒&#xff0c;不仅想了很久&#xff0c;连题解都看了很久。。。水平相当不足啊啊&#xff0c;不多说废话&#…

AAS的完整形式是什么?

AAS&#xff1a;活着和微笑 (AAS: Alive And Smiling) AAS is an abbreviation of "Alive And Smiling". AAS是“活着和微笑”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Y…

《MySQL 8.0.22执行器源码分析(1)——execute iterator一些记录》

目录一条语句的函数调用栈顺序8.0使用迭代器模式改进executorint *handler*::ha_rnd_next(*uchar* **buf*)int *TableScanIterator*::Read()int FilterIterator :: Read&#xff08;&#xff09;int HashJoinIterator::Read()int NestedLoopIterator :: Read&#xff08;&#…

关于autoupgader的狗屎问题

由于win7和xp的权限问题&#xff0c;导致这个自动升级玩意不正常。这个狗屎问题很简单&#xff0c;把exe文件的兼容性设定该一下。真是气死洒家了。转载于:https://www.cnblogs.com/usegear/p/3679097.html

strcspn函数

函数原型&#xff1a;extern int strcspn(char *str1,char *str2) 参数说明&#xff1a;str1为参照字符串&#xff0c;即str2中每个字符分别与str1中的每个字符比较。 所在库名&#xff1a;#include <string.h> 函数功能&#xff1a;以str1为参照&#xff0c…