結果
問題 | No.1579 New Type of Nim |
ユーザー |
|
提出日時 | 2021-07-02 21:35:35 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 62 ms / 2,000 ms |
コード長 | 3,678 bytes |
コンパイル時間 | 284 ms |
コンパイル使用メモリ | 82,460 KB |
実行使用メモリ | 65,024 KB |
最終ジャッジ日時 | 2024-07-23 05:16:56 |
合計ジャッジ時間 | 3,261 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
import sysfrom sys import exit, stdinfrom collections import deque, defaultdict, Counterfrom copy import deepcopyfrom bisect import bisect_left, bisect_right, insort_left, insort_rightfrom heapq import heapify, heappop, heappushfrom itertools import product, permutations, combinations, combinations_with_replacementfrom functools import reducefrom math import gcd, sin, cos, tan, asin, acos, atan, atan2, degrees, radians, ceil, floorfrom math import pi as PIfrom random import randint# from decimal import Decimalsys.setrecursionlimit(500000)INF = (1<<61)-1EPS = 1e-10MOD = 10**9+7# MOD = 998244353def input():return stdin.readline()[:-1]def intput():return int(stdin.readline())def minput():return stdin.readline()[:-1].split()def linput():return stdin.readline()[:-1].split()def mint():return map(int,stdin.readline().split())def lint():return list(map(int,stdin.readline().split()))def ilint():return int(stdin.readline()), list(map(int,stdin.readline().split()))def lcm(x,y):return x*y//gcd(x,y)def lgcd(l):return reduce(gcd,l)def llcm(l):return reduce(lcm,l)def powmod(n,i,mod=MOD):return pow(n,mod-1+i,mod) if i<0 else pow(n,i,mod)def div2(x):return x.bit_length()def div10(x):return len(str(x))-(x==0)def popcount(x):return bin(x).count('1')def digit(x,i,max_len=None):s = str(x)if max_len:i -= max_len-len(s)return int(s[i-1]) if i>0 else 0def digitsum(x):ans = 0for i in range(div10(x)):ans += digit(x,i+1)return ansdef pf(x,mode='counter'):C = Counter()p = 2while x>1:k = 0while x%p==0:x //= pk += 1if k>0:C[p] += kp = p+2-(p==2) if p*p<x else xif mode=='counter':return CS = set([1])for k in C:T = deepcopy(S)for x in T:for i in range(1,C[k]+1):S.add(x*(k**i))if mode=='set':return Sif mode=='list':return sorted(S)def isprime(x):if x<2:return Falsereturn len(pf(x,'set'))==2def matmul(A, B):# import numpyA1, A2 = A >> 15, A & (1 << 15) - 1B1, B2 = B >> 15, B & (1 << 15) - 1X = np.dot(A1, B1) % MODY = np.dot(A2, B2)Z = np.dot(A1 + A2, B1 + B2) - X - Yreturn ((X << 30) + (Z << 15) + Y) % MODdef matpow(A, N):P = np.eye(A.shape[0], dtype=np.int64)while N:if N & 1:P = matmul(P, A)A = matmul(A, A)N >>= 1return Pdef zash(S):lis = sorted(S)dic = {}for i,x in enumerate(lis):dic[x] = ireturn lis, dicdef pr(*x):print(*x, sep='', end='') if len(x) else print()def lprint(l):for x in l: print(x)def ston(c, c0='a'):return ord(c)-ord(c0)def ntos(x, c0='a'):return chr(x+ord(c0))def judge(x, l=['Yes', 'No']):print(l[0] if x else l[1])def debug(*x, flag=1):if flag: print(*x)####################################################### N=10# def mex(S):# for k in range(10000):# if k not in S:# return k# dp=[[-1]*N for _ in range(N)]# dp[0][0]=0# for i in range(N):# for j in range(N):# if i==0 or j==0:# dp[i][j]=i+j# continue# S=set()# for ii in range(i):# if ii!=j:# S.add(dp[ii][j])# for jj in range(j):# if jj!=i:# S.add(dp[i][jj])# dp[i][j]=mex(S)# lprint(dp)a,b=mint()if a==b and a%2:print('Q')elif abs(a-b)==1 and min(a,b)%2:print('Q')else:print('P')