結果
問題 | No.125 悪の花弁 |
ユーザー |
![]() |
提出日時 | 2015-04-16 01:19:46 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 250 ms / 5,000 ms |
コード長 | 1,085 bytes |
コンパイル時間 | 1,657 ms |
コンパイル使用メモリ | 77,060 KB |
実行使用メモリ | 96,080 KB |
最終ジャッジ日時 | 2024-07-04 14:47:30 |
合計ジャッジ時間 | 3,180 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 |
ソースコード
def inv(p,m):# return 1/p mod m , that is, return (a,b) s.t pa+bm = 1 (and get a)if p>m:b,a=inv(m,p)return (a,b)if p==1:return (1,0)# m=cp+r# pa+b(cp+r)=1 <=> (a+bc)p + br = 1c=m/pr=m%pb,a_bc=inv(r,p)return (a_bc-b*c, b)def gcd(a,b):if b<a:return gcd(b,a)if b%a == 0:return areturn gcd(b%a,a)mod=1000000007K=int(raw_input())C=map(int,raw_input().split())F=[1 for i in xrange(1000001)]for i in xrange(1,1000001):F[i]=F[i-1]*iF[i]%=modg=C[0]L=0for c in C:g=gcd(g,c)L+=cD=[i for i in range(1,g+1) if g%i==0]Cnt=[0 for d in D]ans=0for i in xrange(len(D)-1,-1,-1):d=D[i]tCnt=F[L/d]#print F[L/d],for c in C:#print "/",F[c/d],tCnt*=inv(F[c/d],mod)[0]tCnt%=mod#print "=",tCntCnt[i]+=tCntfor j in xrange(i-1,-1,-1):if d%D[j]==0:Cnt[j]-=Cnt[i]Cnt[j]%=modans+=(Cnt[i]*inv(L/d,mod)[0])ans%=mod#for c,d in zip(Cnt,D):# print L/d,":",cprint ans