結果
| 問題 |
No.3236 累乗数大好きbot
|
| コンテスト | |
| ユーザー |
Mogobon
|
| 提出日時 | 2025-08-15 23:56:21 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 188 ms / 4,000 ms |
| コード長 | 901 bytes |
| コンパイル時間 | 296 ms |
| コンパイル使用メモリ | 82,404 KB |
| 実行使用メモリ | 79,572 KB |
| 最終ジャッジ日時 | 2025-08-15 23:56:28 |
| 合計ジャッジ時間 | 6,746 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 31 |
ソースコード
import math
Nmax = 10**12
def dictionary():
# powers[n] は「n乗」の結果の集合
powers = [set() for _ in range(40)]
for n in range(3, 31):
a = 2
while a ** n <= Nmax:
powers[n].add(a ** n)
a += 1
for n in range(31, 40):
powers[n].add(2 ** n)
# dict: {値: べき乗の指数}
result = {}
for n, aset in enumerate(powers):
for key in aset:
result[key] = n
return result
def is_square(N):
root = int(math.isqrt(N))
return root * root == N
def solve(N, dict_map):
if N in dict_map:
return dict_map[N]
elif is_square(N):
return 2
else:
return 1
def main():
Q = int(input())
N_list = [int(input()) for _ in range(Q)]
dict_map = dictionary()
for n in N_list:
print(solve(n, dict_map))
if __name__ == "__main__":
main()
Mogobon