AtCoder Beginner Contest 224 F 問題 Problem where +s Separate Digits
問題
提出解答
問題の概要
から までの数字のみで構成される文字列 に対して, 以下のような操作を行い, 文字列 を行う.
- 個ある文字の間それぞれに対して, を挿入するか, 何もしない.
そして, を計算式と満たしたときの計算結果を とする.
としては 通りあるが, 全ての場合における の総和を求めよ.
制約
- は から までの数字のみで構成される長さ 以上 以下の文字列.
解法
とする. また, に対して, 位置 を の 文字目と 文字目の間とする. また, に対して, で の 文字目を整数と見なしたときの値とする.
を1つ固定する. このとき, を において, ] が属する項において ] は の位を表しているとする. このとき,
である. ここで, であることから,
より,
である. を動かした総和は, シグマを交換することにより
となるので, 各 において, 文字目が の位となるような はいくつあるか? という問題を解けば良いことになる.
において, 文字目が の位になるための必要十分条件は,
- かつ
- のとき
- 位置 に が挿入されていない.
- 位置 に が挿入されている.
- のとき
- 位置 に が挿入されていない.
- のとき
である. それぞれを満たす の個数を求める.
- のとき
- 位置 の 箇所に挿入の条件があり, それ以外にはないので, 通り
- のとき
- 位置 の 箇所に挿入の条件があり, それ以外にはないので, 通り
従って,
となることから, 求めるべき値は,
である. を前計算しておくことにより, 全体の計算量 で解答を求めることができた.