結果
問題 | No.1299 Random Array Score |
ユーザー |
![]() |
提出日時 | 2020-11-27 22:36:20 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 91 ms / 2,000 ms |
コード長 | 2,383 bytes |
コンパイル時間 | 270 ms |
コンパイル使用メモリ | 82,364 KB |
実行使用メモリ | 100,056 KB |
最終ジャッジ日時 | 2024-07-26 18:55:15 |
合計ジャッジ時間 | 3,823 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
# coding: UTF-8# <<<基本的なimport系>>>import sysfrom sys import stdininput = stdin.readlineimport mathimport bisect# <<<定数系>>># ここは問題によって法を変える# MOD = 10**9+7MOD = 998244353nil = NoneINF = 10**18# <<<配列系>>># 番号a~b配列のスライスは、l[a:b+1]# 1次元配列作成、値xをn個def NewArray1(n,x):return [x]*n# 2次元配列作成、値xをh行w列def NewArray2(h,w,x):return [[x]*w for i in range(h)]# 2次元配列aryのk番目で昇順ソートdef sort2up(ary,k):return sorted(ary, key=lambda x: x[k])# 2次元配列aryのk番目で降順ソートdef sort2down(ary,k):return sorted(ary, reverse=True, key=lambda x: x[k])# <<<二分探索系(必ずソートしてから使え!!!)>>># 配列aryにおけるx<aとなる要素xの個数:パターン1def bsearch1(ary,a):return bisect.bisect_left(ary,a)# 配列aryにおけるx<=aとなる要素xの個数:パターン2def bsearch2(ary,a):return bisect.bisect_right(ary,a)# 配列aryにおけるx>aとなる要素xの個数:パターン3def bsearch3(ary,a):return len(ary)-bisect.bisect_right(ary,a)# 配列aryにおけるx>=aとなる要素xの個数:パターン4def bsearch4(ary,a):return len(ary)-bisect.bisect_left(ary,a)# <<<数学系>>># 繰り返し二乗法# ---> pow(底,累乗,MOD)の組み込み関数を使え!# 組み合わせ(nCr)(MODをとっている)def nCr(n,r):num = 1fact = 1for i in range(r):num = num * (n-i) % MODfact = fact * (i+1) % MODreturn num * pow(fact, MOD-2, MOD) % MOD# 重複組み合わせ(nHr)(MODをとっている)def nHr(n,r): # n個の異なるものからr個とってくる場合の数return nCr(n+r-1,r)# <<<累積和>>>'''# 配列aの累積和がss = NewArray1(len(a)+1,nil)s[0] = 0for i in range(len(a)):s[i+1] = s[i] + a[i]# AからBまでの和は s[B+1]-s[A]'''# <<<入出力系>>># 1行1数字# int(input())# 1行n数字(区切りあり)# map(int, input().split())# 1行n数字(リストに格納)# list(map(int, input().split()))# n行1数字(リストに格納)# [int(input()) for _ in range(n)]def p(x):print(x)###n, k = map(int, input().split())a = list(map(int, input().split()))sum = sum(a)v = (sum*pow(2,k,MOD))%MODp(v)