結果
| 問題 | No.3692 Calculate Mu |
| コンテスト | |
| ユーザー |
Tuchmos
|
| 提出日時 | 2026-09-09 12:36:41 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 28 ms / 2,000 ms |
| + 966µs | |
| コード長 | 2,175 bytes |
| 記録 | |
| コンパイル時間 | 94 ms |
| コンパイル使用メモリ | 81,152 KB |
| 実行使用メモリ | 57,472 KB |
| 最終ジャッジ日時 | 2026-09-09 12:36:46 |
| 合計ジャッジ時間 | 2,048 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 |
ソースコード
###############################################################
#https://atcoder.jp/contests/abc180/submissions/70920858
import random
from math import gcd
def is_prime(n):
if n<2:
return False
prime=[2,3,5,7,11,13]
for p in prime:
if n%p==0:
return n==p
d=n-1
s=0
while d%2==0:
d//=2
s+=1
for a in [2,325,9375,28178,450775,9780504,1795265022]:
if a%n==0:
continue
x=pow(a,d,n)
if x==1 or x==n-1:
continue
for i in range(s-1):
x=x*x%n
if x==n-1:
break
else:
return False
return True
def _rho(n):
if n%2==0:
return 2
if n%3==0:
return 3
while True:
y=random.randrange(2,n-1)
c=random.randrange(1,n-1)
m=128
g=1
r=1
q=1
x=0
while g==1:
x=y
for i in range(r):
y=(y*y+c)%n
k=0
while k<r and g==1:
ys=y
for i in range(min(m,r-k)):
y=(y*y+c)%n
q=(q*(x-y)%n)%n
g=gcd(q,n)
k+=m
r<<=1
if g==n:
g=1
while g==1:
ys=(ys*ys+c)%n
g=gcd(abs(x-ys),n)
if g==1:
continue
return g
def _fac(n,lst):
if n==1:
return
if is_prime(n):
lst.append(n)
return
d=_rho(n)
_fac(d,lst)
_fac(n//d,lst)
def factors(n):
res=[]
_fac(n,res)
d={}
for p in res:
d[p]=d.get(p,0)+1
return d
def divisors(n):
pf=factors(n)
res=[1]
for p,e in pf.items():
new=[]
mul=1
for _ in range(e+1):
for v in res:
new.append(v*mul)
mul*=p
res=new
res.sort()
return res
###############################################################
N=int(input())
if N==1:
print(1)
exit()
F=factors(N)
cnt=0
for p,e in F.items():
if e>1:
print(0)
exit()
cnt^=1
print((-1)**cnt)
Tuchmos