[BOJ] - 1065



問題1065


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

入力


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

しゅつりょく


最初の行は、1以上、N以下の数値を出力します.

コード#コード#

n = int(input())

num = 0
for i in range(1,n+1): #n+1를 한이유는 n이 1000이면 1부터 999까지 돌기때문
    if i < 100: #100보다 작은 수일때는 비교수가 없기 때문에 무조건 등차수열인 한수.
        num += 1
    
    elif (i//100 - i%100//10) == (i%100//10 - i%10): # 함수로 빼면 더 좋음.  
        num += 1    
    
print(num)

説明:

  • 等差数列:2つの連続数の差が等しい数列
  • 漢数:与えられた数nの各桁数が等差数列である場合、1つの数
    すなわち,1から1000までの数では100未満の数は比較できないが,無条件等差数列であるため,1つの数である.

  • 100未満の数字はすべて1つの数でカウントされます

  • 100桁-10桁=10桁-1の桁が等しい場合、1桁を求める.残りの演算子(//)とシェア演算子(%)を使用して評価します.

  • 最初はその数字の概念を理解していませんでしたが、strで数字を解きたいので、多くの困難に直面しました.

  • n+1の理由は、nが1000であれば、1から999に移行するからである.