Pinely Round 1 (Div. 1 + Div. 2) D. Carry Bit 別解
https://codeforces.com/contest/1761/problem/D
問題概要
非負整数 に対し 進数で を計算したときの繰り上がりの回数を とおく。 整数の組 であって、 であるようなものの個数を で割った余りを求めよ。
解法
を以下のように定義します。
- 整数 であって、 で の位から の位への繰り上がりがあるものの個数を とする。
- 整数 であって、 で の位から の位への繰り上がりがないものの個数を とする。
また、 とします。
このとき、 について以下が成り立ちます。
なので、上の式の両辺を 倍しこれを代入すると
よって なので、
となります。
求めたい答えは なので、 について を求めることを考えます。
多項定理を用いて展開して
となります。
次数を比較すると、 となるような のみ考えればよいです。 を固定すると は一意に定まります。この について を計算し、総和を求めればよいです。