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,一经查实,立即删除!

相关文章

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变…

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…

《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;&#…

strcspn函数

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

MongoDB源码概述——内存管理和存储引擎

数据存储&#xff1a; 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存&#xff0c;而不是直接持久化到数据库存储文件&#xff0c;这与MongoDB对数据库记录文件的存储管理操作有关。MongoDB采用操作系统底层提供的内存文件映射&#xff08;MMap&#xff09;的方…

SharePoint 2010 Form Authentication (SQL) based on existing database

博客地址 http://blog.csdn.net/foxdaveSharePoint 2010 表单认证&#xff0c;基于现有数据库的用户信息表本文主要描述本人配置过程中涉及到的步骤&#xff0c;仅作为参考&#xff0c;不要仅限于此步骤。另外本文通俗易懂&#xff0c;适合大众口味儿。I. 开启并配置基于声明的…

小狐狸ChatGPT系统 不同老版本升级至新版数据库结构同步教程

最新版2.6.7下载&#xff1a;https://download.csdn.net/download/mo3408/88656497 小狐狸GPT付费体验系统如何升级&#xff0c;该系统更新比较频繁&#xff0c;也造成了特别有用户数据情况下升级时麻烦&#xff0c;特别针对会员关心的问题出一篇操作教程&#xff0c;本次教程…

HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)

I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 33469 Accepted Submission(s): 13168 Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问&#xff0c;从某某到某某当中&#xff0c;…

C# 把数字转换成链表

例如&#xff1a;123456转换成 1 -> 2 -> 3-> 4-> 5-> 6 View Code static LinkedList<int> CovertIntToLinkedList(int num){Stack<int> stack new Stack<int>();LinkedList<int> result new LinkedList<int>();while (num!0…

《MySQL 8.0.22执行器源码分析(4.1)Item_sum类以及聚合》

Item_sum类用于SQL聚合函数的特殊表达式基类。 这些表达式是在聚合函数&#xff08;sum、max&#xff09;等帮助下形成的。item_sum类也是window函数的基类。 聚合函数&#xff08;Aggregate Function&#xff09;实现的大部分代码在item_sum.h和item_sum.cc 聚合函数限制 不…

Java 性能优化实战记录(2)---句柄泄漏和监控

前言: Java不存在内存泄漏, 但存在过期引用以及资源泄漏. (个人看法, 请大牛指正) 这边对文件句柄泄漏的场景进行下模拟, 并对此做下简单的分析.如下代码为模拟一个服务进程, 忽略了句柄关闭, 造成不能继续正常服务的小场景. 1 public class FileHandleLeakExample {2 3 p…

骑士游历问题问题_骑士步行问题

骑士游历问题问题Problem Statement: 问题陈述&#xff1a; There is a chessboard of size NM and starting position (sx, sy) and destination position (dx,dy). You have to find out how many minimum numbers of moves a knight goes to that destination position? 有…

Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)...

一、搭建Android开发环境 准备工作&#xff1a;下载Eclipse、JDK、Android SDK、ADT插件 下载地址&#xff1a;Eclipse:http://www.eclipse.org/downloads/ JDK&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html Android SD…

《dp补卡——01背包问题》

目录01背包[416. 分割等和子集](https://leetcode-cn.com/problems/partition-equal-subset-sum/)[1049. 最后一块石头的重量 II](https://leetcode-cn.com/problems/last-stone-weight-ii/)[494. 目标和](https://leetcode-cn.com/problems/target-sum/)01背包 1、dp数组以及…

用JavaScript往DIV动态添加内容

参考&#xff1a;http://zhidao.baidu.com/link?url6jSchyqPiEYCBoKdOmv52YHz9r7MTBms2pK1N6ptOX1kaR2eg320mlW1Sr6n36hpOeOadBxC2rWWGuhZPbms-K <div id"show"></div>要填充的数据为: 这是一个测试例子.jquery&#xff1a;$(function(){ var data …

《dp补卡——完全背包问题》

N件物品和一个最多能背重量为W的背包。第i件物品的重量为weight[i]&#xff0c;得到的价值是value[i]。每件物品都有无限个(可以放入背包多次)&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 01背包和完全背包唯一不同在于遍历顺序上。 01背包的核心代码&#xff1a…

《dp补卡——多重背包》

多重背包简介&#xff1a; 有N种物品和一个容量为V的背包。第i种物品最多有Mi件可用&#xff0c;每件耗费的空间为Ci&#xff0c;价值为Wi。求解将哪些物品装入背包可使得这些物品耗费的空间总和不超过背包容量&#xff0c;且价值总和最大。 将Mi件摊开&#xff0c;就是一个01背…

CocoaAsyncSocket 套接字

CocoaAsyncSocket 套接字 https://github.com/robbiehanson/CocoaAsyncSocket Asynchronous socket networking library for Mac and iOS 用于iOS以及Mac的异步套接字网络库。 TCP GCDAsyncSocket and AsyncSocket are TCP/IP socket networking libraries. Here are the key…

谷歌浏览器设置缓存方法

谷歌浏览器设置缓存方法&#xff1a; 1、在桌面Google Chrome快捷方式&#xff0c;目标&#xff1a;找到 C:\Users\Splendid\AppData\Local\…\Application\chrome.exe 在这后面加上-Disk-Cache-Dir”Z:\TEMP” 注意: -Disk前面有空格&#xff0c;”Z:\TEMP” 是文件存放在Z盘T…