結果
問題 | No.125 悪の花弁 |
ユーザー |
|
提出日時 | 2021-06-24 00:16:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 334 ms / 5,000 ms |
コード長 | 1,026 bytes |
コンパイル時間 | 554 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 162,204 KB |
最終ジャッジ日時 | 2024-06-25 00:26:26 |
合計ジャッジ時間 | 2,658 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 |
ソースコード
import sysinput = lambda : sys.stdin.readline().rstrip()sys.setrecursionlimit(2*10**5+10)write = lambda x: sys.stdout.write(x+"\n")debug = lambda x: sys.stderr.write(x+"\n")writef = lambda x: print("{:.12f}".format(x))### 約数列挙def fs(n):s = set()for i in range(1,int(n**0.5)+2):if n%i==0:s.add(i)s.add(n//i)l = sorted(list(s))return lk = int(input())c = list(map(int, input().split()))M = 10**9+7ans = 0size = 0n = sum(c)from math import gcdg = c[0]for i in range(1,k):g = gcd(g, c[i])g1 = [1]for i in range(1, n+1):g1.append(g1[-1]*i%M)f = fs(g)_inv = {}def inv(v):if v in _inv:return _inv[v]val = pow(v, M-2, M)_inv[v] = valreturn valfor v in range(1,n+1):tmp = gcd(v,n)v = tmpd = n//vif g%d!=0:continueval = g1[v]for cc in c:val *= inv(g1[cc//d])val %= Mans += valans %= M# print(v, d, val)ans *= pow(n, M-2, M)print(ans%M)