結果
| 問題 |
No.1631 Sorting Integers (Multiple of K) Easy
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2021-07-30 23:45:46 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,108 bytes |
| コンパイル時間 | 171 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 69,120 KB |
| 最終ジャッジ日時 | 2024-09-16 03:58:42 |
| 合計ジャッジ時間 | 3,069 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 5 RE * 23 |
ソースコード
def main():
N,K = map(int,input().split())
#global K
C = list(map(int,input().split()))
A = []
for i in range(N):
for j in range(C[i]):
A.append(i+1)
#print(A)
MAX = 200000
popcount = [0]*MAX
for i in range(1,MAX):
popcount[i] = popcount[i//2] + i%2
#print(popcount)
#dp[mask][j]:maskを使った時の余りがj
dp = [[0]*(K) for _ in range(1<<N)]
dp[0][0] = 1 #何もない場合の数は1
for mask in range(1<<N):
pcnt = popcount[mask] #この個数入っている
#print("mask",mask,"pct",pcnt)
base = pow(10,pcnt)
for i in range(N):
if (mask>>i)&1 == 1: continue #既に含まれている
val = A[i]*base%K
for j in range(K):
#print(mask|1<<i,mask,val,base)
dp[mask|1<<i][(j+val)%K] += dp[mask][j]
#print(dp)
ans = dp[-1][0]
fact = [1] #fact[n]: n!
for i in range(1,N+1):
fact.append(fact[-1]*i)
for c in C:
ans //= fact[c]
print(ans)
if __name__ == '__main__':
main()
ygd.