結果
| 問題 |
No.889 素数!
|
| コンテスト | |
| ユーザー |
naoe123
|
| 提出日時 | 2020-02-01 04:05:10 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,489 bytes |
| コンパイル時間 | 180 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-09-18 19:27:57 |
| 合計ジャッジ時間 | 3,554 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 60 WA * 1 |
ソースコード
N=int(input())
import math
def isPrime(n):
if n == 2:
return True
if n % 2 == 0:
return False
# nの平方根まで計算する
m = math.floor(math.sqrt(n)) + 1
for p in range(3, m, 2):
if n % p == 0:
return False
return True
def bisearch(f, n):
l = 0
r = n
fl = f(l)
fr = f(r)
while l <= r:
m = (l + r) // 2
fm = f(m)
#print l,m,r,fl,fm,fr,n
if fm == n:
return m
elif fm > n:
r = m - 1
fr = f(r)
else:
l = m + 1
fl = f(l)
def try_square_root(n2):
return bisearch(lambda n:n*n, n2)
def is_integer_num(n):
if isinstance(n, int):
return True
if isinstance(n, float):
return n.is_integer()
return False
def sanjoucheck(n):
return is_integer_num(n**(1/3))
def sigma(n):
sum = 0 # これに約数を足していく
for d in range(1, n + 1): # 1とnの間の自然数が約数か確かめていく
if n % d == 0: # dがnの約数なら
sum += d # sumにdを加える
return sum
perfect=[]
def perfects(l): # lまでの完全数を出力する
for i in range(1, l + 1):
if sigma(i) == 2 * i:
perfect.append(i)
return perfect
if isPrime(N):
print('Sosu!')
elif N>=2 and try_square_root(N):
print('Heihosu!')
elif N>=2 and sanjoucheck(N):
print('Ripposu!')
elif N in perfects(N):
print('Kanzensu!')
else:
print(N)
naoe123