結果
| 問題 |
No.377 背景パターン
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-05 21:52:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 856 bytes |
| コンパイル時間 | 306 ms |
| コンパイル使用メモリ | 82,560 KB |
| 実行使用メモリ | 89,052 KB |
| 最終ジャッジ日時 | 2024-10-08 16:10:23 |
| 合計ジャッジ時間 | 4,111 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 5 |
| other | RE * 14 |
ソースコード
#!/usr/bin/python
from collections import defaultdict
from fractions import lcm
import sys,subprocess
if sys.version_info[0]>=3:
raw_input=input
xrange=range
def prime_division(n):
h=defaultdict(int)
line=subprocess.check_output(['factor',str(n)])
for e in line.split()[1:]: h[int(e)]+=1
return [(k,v) for k,v in h.items()]
def divisor_totient(a,d,n,t):
if d==len(a):
yield (n,t)
else:
for i in xrange(a[d][1]+1):
for x,xt in divisor_totient(
a,d+1,
n*a[d][0]**i,
(t if i==0 else t*(a[d][0]-1)*a[d][0]**(i-1))
): yield (x,xt)
cache={}
M=1000000007
H,W,K=map(int,raw_input().split())
A=prime_division(H)
B=prime_division(W)
r=0
for a,at in divisor_totient(A,0,1,1):
for b,bt in divisor_totient(B,0,1,1):
key=W*H//lcm(a,b)
if key not in cache: cache[key]=pow(K,key,M)
r=(r+at*bt*cache[key])%M
print(r*pow(W*H,M-2,M)%M)