DDCC2020 D - Digit Sum Replace
問題原文
問題要旨
が 1桁になるまで以下の操作を繰り返す。
- の連続する2桁を選び、 その和に置き換える。
最大で何回操作できるか求めよ。
考えたこと
- 操作の順番は関係なさそう。
難しいこと
- いろんな実験をしても規則性が見えてこない。
- 枠で捉えるのが難しい。
考えるべきこと
2桁を選んだ結果は2パターンに大別できる。
- 桁数が1減って、桁和は変わらない
- 桁数は変わらず、桁和が9減る
桁数は1で終わるので、1. のパターンは 回行われる。
- 桁和が9以下になったら 2. のパターンは起こらない。すなわち、2.のパターンは 回行われる。
実装
M = int(input()) digit_num, digit_sum = 0, 0 for i in range(M): d, c = map(int, input().split()) digit_num += c digit_sum += d * c print((digit_num - 1) + ((digit_sum - 1) // 9))
所感
桁和の減る法則性に気づきたかった。