問題
http://agc017.contest.atcoder.jp/tasks/agc017_a
を以下のように
入力された配列の偶数と奇数の個数を調べ
計算量を減らすため階乗の配列をとってから
コンビネーションを計算し答えを出しました。
ほとんど通るのですが
一部のサンプルでWAとなってしまして、試行錯誤しましたがどこが間違っているのかわかりません。
ご指摘いただけるとうれしいです。
よろしくお願いします。
python
1n, p = (int(i) for i in input().split()) 2A=[int(i) for i in input().split()] 3an=0 4 5for i in range(0,n): 6 A[i]=A[i]%2 7one=A.count(1) 8zero=A.count(0) 9 10f=[1] 11t=1 12for i in range(1,max(one,zero)+3): 13 t=t*i 14 f.append(t) 15#0 16if p==0: 17 if zero!=0: 18 for i in range(0,zero+1): 19 an+=round(f[zero]/(f[zero-i]*f[i])) 20 21 j=0 22 if one!=0: 23 while j<=one: 24 an+=round(f[one]/round(f[one-j]*f[j])) 25 j+=2 26 if one!=0 and zero!=0: 27 an-=1 28#1 29if p==1: 30 oo=0 31 for i in range(0,zero+1): 32 oo+=round(f[zero]/round(f[zero-i]*f[i])) 33 j=1 34 ll=0 35 if one!=0: 36 while j<=one: 37 ll+=round(f[one]/round(f[one-j]*f[j])) 38 j+=2 39 an=oo*ll 40 41print(an)
回答2件
あなたの回答
tips
プレビュー