この問題は、数論と組合せ論を組み合わせて考えるタイプの問題です。N桁の正の3の倍数で、隣り合う2桁の数字がすべて3の倍数にならないようにする数を数えるには、条件を整理して段階的にアプローチすることが重要です。
問題の条件整理
- N≧3の正の整数
- 数全体が3の倍数
- 隣接する2桁の数字はいずれも3の倍数にならない
- 十の位が0の2桁は2桁として数えない
3の倍数の条件
ある数が3の倍数であるためには、その数字の和が3の倍数である必要があります。この条件を最終的に満たすように数字を組み合わせます。
隣接2桁の制約
隣接する数字の2桁が3の倍数にならない条件を考えます。例えば、2桁の組み合わせ(d1,d2)が3の倍数になるかどうかを確認し、使用できない組を除外します。
2桁の組が3の倍数になるのは、数字の和が3の倍数の時です。したがって、隣接数字の和が3の倍数になるペアを避ける必要があります。
組合せの数え方
DP(動的計画法)を使って、各桁位置で許可される数字のパターンを状態として持ち、次の桁に移る際に隣接2桁が3の倍数にならない条件をチェックします。
- 状態1:前の数字を保持
- 状態2:前の数字と現在の数字の和が3で割り切れないかチェック
- 状態3:最後の桁まで到達したときに全体が3の倍数か確認
例と具体的ステップ
例えばN=3の場合。
- 1桁目は1~9の数字
- 2桁目は1桁目と合計が3の倍数にならない数字
- 3桁目は全体の合計が3の倍数になるように選ぶ
このようにして、再帰的にまたはDPで数を数えていくことでN桁全体のパターン数を求めることができます。
まとめ
この問題は条件が複数重なるため、単純な公式ではなく、数字の和と隣接2桁の条件を組み合わせた状態管理による計算が有効です。動的計画法を使うことで、全てのN桁の数を効率よくカウントできます。


コメント