結果
問題 | No.1232 2^x = x |
ユーザー | buey_t |
提出日時 | 2023-03-24 12:48:32 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 170 ms / 2,000 ms |
コード長 | 1,991 bytes |
コンパイル時間 | 151 ms |
コンパイル使用メモリ | 82,300 KB |
実行使用メモリ | 90,200 KB |
最終ジャッジ日時 | 2024-09-18 16:18:21 |
合計ジャッジ時間 | 1,599 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 135 ms
84,736 KB |
testcase_01 | AC | 164 ms
90,112 KB |
testcase_02 | AC | 169 ms
90,200 KB |
testcase_03 | AC | 170 ms
89,856 KB |
ソースコード
def main(): from math import sqrt,sin,cos,tan,ceil,radians,floor,gcd,exp,log,log10,log2,factorial,fsum from heapq import heapify, heappop, heappush from bisect import bisect_left, bisect_right from copy import deepcopy import copy import random from collections import deque,Counter,defaultdict from itertools import permutations,combinations from decimal import Decimal,ROUND_HALF_UP #tmp = Decimal(mid).quantize(Decimal('0'), rounding=ROUND_HALF_UP) from functools import lru_cache, reduce #@lru_cache(maxsize=None) from operator import add,sub,mul,xor,and_,or_,itemgetter INF = 10**18 mod1 = 10**9+7 mod2 = 998244353 #DecimalならPython ''' 一周回ってくるってことだよな 2^xの逆元がx? 2^xが 1 (mod p)のとき x = 1,p+1,2p+1, 2^x = 1,p+1,2p+1 pは2以外の時は奇数 p = 2 x = 2 2^x = 4 p = 3 x = 4 2^x = 16 p = 5 x = 3 2^x = 8 p = 7 x = 11 2^x = 2048 2^xを試していく。余りがxならよい 同じマスに来たらやめてよい なるほど 2^(p-1) = 1 (mod p) 2^(p-1)n = 1 (mod p) ''' def modinv(a, b): p = b x, y, u, v = 1, 0, 0, 1 while b: k = a // b x -= k * u y -= k * v x, u = u, x y, v = v, y a, b = b, a % b x %= p if x < 0: x += p return x N = int(input()) for _ in range(N): p = int(input()) if p == 2: print(2) continue ans = (p-1)*modinv(p-1,p) print(ans) if __name__ == '__main__': main()