[10655]一手


🔗 質問リンク


https://www.acmicpc.net/problem/1065

問題の説明


正の整数Xの各位置が等差数列である場合、その数を1つの数と呼ぶ.等差数列とは、連続する2つの数の差が一定の数列を指す.Nが与えられた場合、プログラムを作成し、1以上、N以下の数値を出力します.

⚠▼制限


  • 最初の行は、1000以下の自然数Nを与える.

  • 最初の行は、1以上、N以下の数値を出力します.
  • 💡 プール(言語:Python)


    軽く直感的に解いてくれました.等差数列を前後項の差異が一定であるか否かに分けてflag変数に格納することでcountか否かを判別する.
    n = input()
    lis = [int(x) for x in n]
    count = 0
    
    for i in range(1, int(n)+1):
      # 공차
      gap = 0
      # 등차수열인지 여부
      flag = True
      # 숫자를 각자리 숫자 하나씩 쪼갠 리스트
      numList = [int(x) for x in str(i)]
    
      for j in range(1, len(numList)):
        # 첫 한쌍으로 공차를 정함
        if j == 1:
          gap = numList[j-1] - numList[j]
        # 중간에 하나라도 등차수열 아니면 반복 중단
        elif numList[j-1] - numList[j] != gap:
          flag = False
          break
      # 등차수열이면 카운트
      if flag:
        count += 1
    
    print(count)