結果
問題 | No.125 悪の花弁 |
ユーザー |
![]() |
提出日時 | 2021-05-09 13:12:43 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 128 ms / 5,000 ms |
コード長 | 1,438 bytes |
コンパイル時間 | 353 ms |
コンパイル使用メモリ | 82,060 KB |
実行使用メモリ | 170,112 KB |
最終ジャッジ日時 | 2024-09-18 19:26:34 |
合計ジャッジ時間 | 1,661 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 |
ソースコード
import sysfrom math import gcdsys.setrecursionlimit(10**7)def I(): return int(sys.stdin.readline().rstrip())def MI(): return map(int,sys.stdin.readline().rstrip().split())def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))def LI2(): return list(map(int,sys.stdin.readline().rstrip()))def S(): return sys.stdin.readline().rstrip()def LS(): return list(sys.stdin.readline().rstrip().split())def LS2(): return list(sys.stdin.readline().rstrip())K = I()C = LI()N = sum(C)mod = 10**9+7g = N # g = gcd(N,C1,…,CK)for c in C:g = gcd(g,c)div = [] # gの約数for i in range(1,g+1):if g % i == 0:div.append(i)fac = [1]for i in range(1,N+1):fac.append((fac[-1]*i) % mod)fac_inv = [0]*(N+1)a = pow(fac[-1],mod-2,mod)for i in range(N,-1,-1):fac_inv[i] = aa *= ia %= moddef f(n,M):# f(n,M) = n!/(m1!*m2!*…) (M = [m1,m2,…])res = fac[n]for m in M:res *= fac_inv[m]res %= modreturn resdef phi(n):if n == 1:return 1res = nfor i in range(2,int(n**.5)+1):if n % i == 0:res -= res//iwhile n % i == 0:n //= iif n == 1: # 時間短縮breakelse:res -= res//nreturn resans = 0for d in div:ans += phi(d)*f(N//d,[c//d for c in C])ans %= modans *= pow(N,mod-2,mod)ans %= modprint(ans)