白駿1065:ハンス|パイソン
1420 ワード
質問する
正の整数Xの各位置が等差数列である場合、その数を1つの数と呼ぶ.等差数列とは、連続する2つの数の差が一定の数列を指す.Nが与えられた場合、プログラムを作成し、1以上、N以下の数値を出力します.
すなわち、135(公差2)258(公差3)と等しい数を1つの数と呼ぶ.
1000以下なので、最大値が3桁というのも手がかり!
入力
最初の行は、1000以下の自然数Nを与える.
しゅつりょく
最初の行は、1以上、N以下の数値を出力します.
に答える
def hansu(n):
cnt = 0
for i in range(1,n+1):
num_list = list(map(int, str(i)))
if i < 100:
cnt += 1
elif num_list[1]-num_list[0] == num_list[2]-num_list[1]:
cnt += 1
return cnt
n = int(input())print(hansu(n))
判別関数を与える
関数は次のとおりです.
def関数名(パラメータ):
소스코드
return 반환값
救助する
私たちの最終目標は出力個数です.したがって、戻り値はcntであるべきである.
関数ソースコードは、1つの数をカウントするcntを0に初期設定します.
for文を用いて,1~パラメータnを範囲として変数i(数字)を設定する.
n+1までの範囲はrange後の範囲値が-1であるためである.
任意の数値を格納するnum listを作成します.
各数字の桁数を比較するためには、桁数を分けなければなりません.
したがって,まず文字列strに変換し,次にint型map(完全変換)に変換し,リスト化する.
後の数字(i)が100未満の場合は、1桁または2桁です.
各ビット数を比較する必要はなく、無条件に1つの数になります.
したがって、すぐにカウントが増加します.cnt+=1はcnt=cnt+1を表す
その他の場合、一時numリスト(数字を分ける)の2番目のビット数と1番目のビット数の差
3桁目と2桁目の差が等しい場合は、1桁としてカウントします
問題では3桁の自然数のみを比較し,4桁目まで比較する必要はない.
前述したようにreturn cnt.
nを入力します.
関数hansu出力を実行します.
Reference
この問題について(白駿1065:ハンス|パイソン), 我々は、より多くの情報をここで見つけました https://velog.io/@dbrudskql823/백준-1065-한수-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol