Edit

【pythonでABC152を解説】D - Handstand 2

問題概要

問題ページ

問題文

正の整数 \(N\) が与えられます。
\(N\) 以下の正の整数の組 \((A,B)\) であって、次の条件を満たすものの個数を求めてください。

  • \(A,B\) を先頭に \(0\) のつかない \(10\) 進数表記で表したときに、 \(A\) の末尾の桁が \(B\) の先頭の桁に等しく、 \(A\) の先頭の桁が \(B\) の末尾の桁に等しい

制約

  • \(1 \leq N \leq 2 \times 10^5\)
  • 入力はすべて整数である。

問題の考察

ACコード

import sys
import collections


def solve():
    readline = sys.stdin.buffer.readline
    mod = 10 ** 9 + 7
    n = int(readline())
    d = collections.defaultdict(int)
    for i in range(1, n + 1):
        s = str(i)
        d[s[0], s[-1]] += 1
    cnt = 0
    for i in range(1, n + 1):
        s = str(i)
        cnt += d[s[-1], s[0]]
    print(cnt)


if __name__ == '__main__':
    solve()

プログラミング

-Edit