Official

A - Digit Sum of 2x Editorial by maspy


[1] 足し算の繰り上がりと各桁の和

一般に、\(a+b\) の各桁の和 \(f(a+b)\) について次が成り立ちます:

\(a+b\) を筆算で計算する際の繰り上がりの回数を \(k\) とするとき,\(f(a+b) = f(a) + f(b) - 9k\) が成り立つ.

「繰り上がり」というのはある桁から \(10\) を引き,ひとつ上の桁の \(1\) を加える操作であることから分かります.


[2] \(M\) の決定

正整数 \(x\)\(f(x)=N\) を満たすとします.\(x+x\) を筆算で計算する際の繰り上がりの回数を \(k\) とすると,[1] より \(f(2x)=f(x) + f(x) - 9k = 2N - 9k\) となります.

したがって,

  • 必ず \(f(2x) \leq 2N\) が成り立つこと.
  • \(x\) の全ての桁が \(4\) 以下であるとき,そのときに限り \(f(2x) = 2N\) が成り立つこと.

が分かります.\(f(x)=N\) かつ \(x\) の全ての桁が \(4\) 以下であるような \(x\) は存在する(例えば \(x = \underbrace{111\cdots 111}_{N}\))ことから,\(M = 2N\) であることが分かります.


[3] \(x\) の決定

\(f(x)=N\) かつ \(f(2x) = 2N\) であるような最小の正整数 \(x\) を求めましょう.

そのような \(x\) について,次が成り立ちます.

  • 全ての桁は \(4\) 以下である.
  • 先頭の桁以外はすべて \(4\) である.

前者の条件は [2] で述べた通りです.

後者の条件を確かめましょう.\(x\) の先頭以外の桁で \(3\) 以下であるものが存在したとします.そのうち最も手前にある桁に注目します. その桁を \(1\) 増加させ,その手前の桁を \(1\) 減少させることにより,\(f(x)=N\) かつ \(f(2x)=2N\) という条件を保ったまま \(x\) を減少させることができます.これは \(x\) の最小性に矛盾します.

\(f(x) = N\) かつこれらの \(2\) 条件を満たす \(x\) はひとつしかありません.具体的には次の通りです.

  • \(N = 4k\) のとき:\(x = \underbrace{44\cdots 44}_{k}\)
  • \(N = 4k+1\) のとき:\(x = 1\underbrace{44\cdots 44}_{k}\)
  • \(N = 4k+2\) のとき:\(x = 2\underbrace{44\cdots 44}_{k}\)
  • \(N = 4k+3\) のとき:\(x = 3\underbrace{44\cdots 44}_{k}\)

これらの \(M, x\) を出力すると正答になります.出力に \(\Theta(N)\) 時間がかかり,計算量は \(\Theta(N)\) 時間となります.

posted:
last update: