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.pswp.cn/news/377148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377148.shtml
英文地址,請注明出處:http://en.pswp.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…