結果

問題 No.1666 累乗数
ユーザー 👑 Kazun
提出日時 2021-09-03 21:50:39
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 2,862 bytes
コンパイル時間 386 ms
コンパイル使用メモリ 82,176 KB
実行使用メモリ 622,928 KB
最終ジャッジ日時 2024-12-15 12:30:54
合計ジャッジ時間 46,580 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 3 TLE * 2 MLE * 14
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#floor(a^(1/k)) .
def Floor_Root(a,k):
"""floor(a^(1/k)) .
a:
k:
"""
assert 0<=a and 0<k
if a==0: return 0
if k==1: return a
#.
x=int(pow(a,1/k))
#
while pow(x+1,k)<=a:
x+=1
#
while pow(x,k)>a:
x-=1
return x
#ceil(a^(1/k)) .
def Ceil_Root(a,k):
"""ceil(a^(1/k)) .
a:
k:
"""
assert 0<=a and 0<k
if a==0:
return 0
if k==1:
return a
#.
x=int(pow(a,1/k))+1
#
while pow(x,k)<a:
x+=1
#
while a<=pow(x-1,k):
x-=1
return x
def kth_Power(a,k):
""" a k , , b^k=a k .
[Input]
a:int
k:int (k>0)
[Output]
: None
: b^k=a b
"""
a_abs=abs(a)
if a: sgn=a//a_abs
else: sgn=0
b=Floor_Root(a_abs,k)
if pow(sgn*b,k)==a:
return sgn*b
else:
return None
def Binary_Search_Small_Count(A,x,equal=False,sort=False):
"""2,x調.
A:
x:調
sort:(True)
equal:Truex""x""
"""
if sort: A.sort()
if len(A)==0 or A[0]>x or ((not equal) and A[0]==x):
return 0
L,R=0,len(A)
while R-L>1:
C=L+(R-L)//2
if A[C]<x or (equal and A[C]==x): L=C
else: R=C
return L+1
def General_Binary_Increase_Search_Integer(L,R,cond,default=None):
"""調, .
L:
R:
cond: (1, 調)
default: L
"""
if not(cond(R)): return default
if cond(L): return L
R+=1
while R-L>1:
C=L+(R-L)//2
if cond(C): R=C
else: L=C
return R
#==================================================
def check(x,K):
A=Floor_Root(x,2)
B=Binary_Search_Small_Count(S,x,True)
return A+B>=K
#==================================================
Prime=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
#==================================================
T=int(input())
Query=[int(input()) for _ in range(T)]
M=max(Query)**2
#===
S=set()
for p in Prime:
for a in range(1,Floor_Root(M,p)+1):
S.add(pow(a,p))
S=sorted([x for x in S if kth_Power(x,2)==None])
for K in Query:
print(General_Binary_Increase_Search_Integer(1,M,lambda x:check(x,K),None))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0