[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)
説明:
すなわち,1から1000までの数では100未満の数は比較できないが,無条件等差数列であるため,1つの数である.
100未満の数字はすべて1つの数でカウントされます
100桁-10桁=10桁-1の桁が等しい場合、1桁を求める.残りの演算子(//)とシェア演算子(%)を使用して評価します.
最初はその数字の概念を理解していませんでしたが、strで数字を解きたいので、多くの困難に直面しました.
n+1の理由は、nが1000であれば、1から999に移行するからである.
Reference
この問題について([BOJ] - 1065), 我々は、より多くの情報をここで見つけました https://velog.io/@byhazy/BOJ-1065-7nd1m3w3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol