AtCoder Beginner Contest 268 D問題 Unique Username
問題
提出解答
問題の概要
次を満たす文字列 が存在するならば一例を挙げ, 存在しなければその一例を挙げよ.
- は次のようにして構成されている.
- の並び替え1つ取ってきて, それを とする.
- ( 個以上の ) ( 個以上の )
- は のどれとも一致しない.
制約
- は英小文字からなる文字列
- は英小文字と からなる文字列
解法
乱択解法について説明する.
とする. このとき, 最初の条件を満たすような文字列の個数はアンダーバーの挿入する場合が なので, 通りである.
このとき, が 以下だったり, より大きくても十分近かった場合は より, 一番上の条件を満たすような文字列を何回かランダムに生成すればいずれかヒットするし, が より十分大きい場合はある程度の回数ランダムに生成すればヒットする.
よって, 一番上の条件を満たす文字列をランダムに生成し, 許容できればその文字列を返し, 許容できなければやり直しとし, 制限時間が来たら "存在しない" とすると高い確率 (?) で正解できる.
なお, のときの場合に注意せよ.