aacord’s memo

abcを中心にpythonで解いた問題のメモ、整理をしています。緑になった。

ディスカバリーチャンネルコンテスト2020 予選D - Digit Sum Replace

結局注目する点は、隣り合う2数を足したときに、繰り上がって桁数が変化しない時は、全体の数の和が9減るということのみ。桁数が減る時は繰り上がりがないため、全体の和は変化しない。
なので求める回数は、全体の和を S, 桁数を T とすると、T-1 + (S-1)//9 となる。
回数を求めることを、総和を減らせる回数と言い換えるところまでは良かったけど、考察を詰めれてなかったので、T-1+s//10 とかだと思ってしまった。

import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
m = int(readline())
ans = 0
chk = -1
for i in range(m):
  d,c = map(int,readline().split())
  ans += c
  chk += d*c
  if chk > 8:
    ans += chk//9
    chk %= 9
print(ans-1)