結果
問題 | No.1554 array_and_me |
ユーザー |
![]() |
提出日時 | 2021-06-20 13:57:42 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,883 bytes |
コンパイル時間 | 308 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 95,744 KB |
最終ジャッジ日時 | 2024-06-22 22:28:10 |
合計ジャッジ時間 | 5,926 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 10 WA * 31 |
ソースコード
def cmb(n, r, p):if (r < 0) or (n < r):return 0r = min(r, n - r)return fac[n]*finv[r]*finv[n-r]%pdef perm(n,r,p):if (r < 0) or (n < r):return 0return fac[n]*finv[n-r]%pN = 2*pow(10,5) + 1000MOD = 998244353fac = [-1]*(N+1); fac[0] = 1; fac[1] = 1 #階乗finv = [-1]*(N+1); finv[0] = 1; finv[1] = 1 #階乗の逆元inv = [-1]*(N+1); inv[0] = 0; inv[1] = 1 #逆元for i in range(2,N+1):fac[i] = fac[i-1]*i%MODinv[i] = MOD - inv[MOD%i]*(MOD//i)%MODfinv[i] = finv[i-1]*inv[i]%MOD#print(cmb(5, 4, MOD))def main():T = int(input())for _ in range(T):N,K = map(int,input().split())A = list(map(int,input().split()))S = sum(A)A.sort(reverse=True)num = [0]*Nnokori = Kfor i in range(N):num[i] += K*A[i]//Snokori -= num[i]#print(num)idx = 0while nokori > 0:num[idx] += 1nokori -= 1idx += 1#print("UP",num)def calc(A,B,mod=998244353):k = sum(B) #回数s = sum(A) #全ての和chi = 1par = pow(s,k,mod)for i in range(len(A)):chi *= pow(A[i],B[i],mod)*cmb(k,B[i],mod)chi %= modk -= B[i] #残りの回数が減る#print(chi,par)ret = chi*pow(par,mod-2,mod)ret %= modreturn ret#for i in range(10):# for j in range(10):# for k in range(10):# for l in range(10):# num = [i,j,k,l,10-(i+j+k+l)]# ans = calc(A,num)# if ans == 484466660:# print(num)ans = calc(A,num)print(ans%MOD)if __name__ == '__main__':main()