白駿1105号[pal|python]


質問する
LとRが与えられる.このとき、L以上、R以下の自然数のうち8の最小数を求めるプログラムを作成してください.
入力
1行目はLとRです.Lは、20,000,000,000,000,000以下の自然数であり、RはL以上、20,000,000,000,000,000以下の自然数である.
しゅつりょく
最初の行の中でL以上、R以下の自然数の中で8の最小数を求めるプログラムを作成します.
入力例1
1 10
サンプル出力1
0
入力例2
88 88
サンプル出力2
2
LとRのビット数は10ビット数であるため、dは10より大きい12とする.
LとRのどちらが大きいか、小さいか分からないので、minとmaxで範囲をドアに変え、そのうちの1つが8を含まない場合は数を必要とせず、8の数が0の場合は直ちに繰り返し文を終了して0を出力します.そうでなければ、このdより小さいものが現れるたびに、cにその値を加え直し、最小の数しか残っていません.
import sys

a,b = map(int, sys.stdin.readline().split(" "))

d=12
for i in range(min(a,b),max(a,b)+1):
  if str(i).count("8") > 0:
    c = str(i).count("8")
    if c<=d:
      d = c
  else:
    d=0
    break

print(d)