結果
問題 | No.2111 Sum of Diff |
ユーザー |
|
提出日時 | 2022-10-28 23:48:55 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 58 ms / 2,000 ms |
コード長 | 667 bytes |
コンパイル時間 | 13,656 ms |
コンパイル使用メモリ | 232,324 KB |
実行使用メモリ | 9,680 KB |
最終ジャッジ日時 | 2024-07-06 03:08:14 |
合計ジャッジ時間 | 15,338 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
// No.2111 Sum of Diffpackage mainimport ("bufio""fmt""os""strconv""strings")func main() {sc := bufio.NewScanner(os.Stdin)sc.Buffer(make([]byte, 200_000*10+2), 200_000*10+2)sc.Scan()N, _ := strconv.Atoi(sc.Text())sc.Scan()ss := strings.Split(sc.Text(), " ")sum := 0for i, s := range ss {a, _ := strconv.Atoi(s)k := modpow(2, N-1-i, MOD) - modpow(2, i, MOD)v := (k * a % MOD)if v < 0 {v += MOD}sum = (sum + v) % MOD}fmt.Println(sum)}const MOD = 998244353func modpow(a int, n int, mod int) int {m := 1for n > 0 {if n&1 == 1 {m = (m * a) % mod}a = (a * a) % modn >>= 1}return m}