Codeforces Round 776 (Div. 3) A – Deletions of Two Adjacent Letters / B – DIV + MOD を解いた記録

A – Deletions of Two Adjacent Letters

問題の概要

英小文字からなる奇数長の文字列 \(s\) が与えられる.
隣接する2文字を削除するという操作を文字列の長さが1になるまで繰り返したとき,最後に文字 \(c\) を残せるか?

問題へのリンク

制約

  • \(s\) は英小文字からなる文字列
  • \(s\) の長さは49以下
  • \(s\) の長さは奇数

解法

文字列 \(s\) の中に文字 \(c\) があるとき, \(c\) の前と後ろにそれぞれ偶数個の文字があれば良いです.

実装例

提出コード

B – DIV + MOD

問題の概要

\(t\) 個のテストケースについて,以下の問に答えよ.

正の整数 \(a\) が与えられたとき, 関数 \(f(x)\) を
\[f(x) = \lfloor \frac{x}{a} \rfloor + (x \bmod a)\]
とする. \(x\) を \(l\) 以上 \(r\) 以下の任意の正の整数とするとき, \(f(x)\) の最大値を求めよ.

問題へのリンク

制約

  • \(1 \leq t \leq 10^{4}\)
  • \(1 \leq a \leq 10^{9}\)
  • \(1 \leq l \leq r \leq 10^{9}\)
  • 入力はすべて整数

解法

\(\lfloor \frac{x}{a} \rfloor\) は明らかに \(x = r\) のとき最大となります.
\(x \bmod a\) は, \(x\) がある整数 \(k\) を用いて \(x = ka-1\) と表せるときに最大となります.
そこで, ある整数 \(k\) を用いて \(m = ka-1\) と表わせ,かつ \(m \leq r\) を満たすような整数 \(m\) を頑張って探し出し,
\(f(m), f(r)\) のうち大きい方を最大値として採用すると通ります.

実装例

提出コード