白準アルゴリズム6−3.いっしょに


マッチングだけで、もっと良い答えではありません.

[白俊阿尔戈里斯姆]6-3。现在


質問する


1つの数:正の整数xの各ビット数が等差数列の数
1	- (o)
14	- (o)
124	- (x)
135 	- (o)
1 ≤ x ≤ N ≤ 1000
正の整数Nを入力する時、x値の中の1つの数を求めます

入力

110

しゅつりょく

99

私の答え


最大
  • 個の数字
  • を入力
    n = int(input())
  • 1から99までの
  • if n < 100:
        print(n)	# 99 이하는 입력한 값이 한수의 개수
  • 100~nを繰り返し、0番のインデックス値と1番のインデックス値の差で公差
  • を求める.
    else:
        count = 99			# 1부터 99까지는 모두 한수
        for i in range(100, n + 1):	# 100부터 n까지 반복
            n_str = str(i)
            x = int(n_str[1]) - int(n_str[0]) # 초항과 다음 오는 항을 비교하여 등차수열의 공차 구함
    判別
  • 等差数列の数字、1番索引値、予め求めた差分値をパラメータとして
  • 等差数列を判別する
    if chk(n_str, x):	# 등차수열 판별 함수
        count += 1		# 등차수열이 맞다면 count 증가
  • 2番のインデックス値から、隣接するインデックス値と比較して、その差が予め求められた値と同じかどうかを判断します.同じ場合、次のインデックス値を比較すると、すべて同じ場合はTrue、ある場合はFalse
  • となります.
    def chk(arr, diff):
        for j in range(2, len(arr)):		# 2번 인덱스 부터 판별할 숫자의 길이까지 반복
            diff2 = int(arr[j]) - int(arr[j - 1])	# 새로운 공차 구함
            if diff != diff2:			# 이전의 공차와 같은지 비교
                return False
        return True
  • 1~n個のデジタル出力
  • print(count)
    コード#コード#
    n = int(input())
    
    
    def chk(arr, diff):
       for j in range(2, len(arr)):
           diff2 = int(arr[j]) - int(arr[j - 1])
           if diff != diff2:
               return False
       return True
    
    
    if n < 100:
       print(n)
    else:
       count = 99
       for i in range(100, n + 1):
           n_str = str(i)
           x = int(n_str[1]) - int(n_str[0])
           if chk(n_str, x):
               count += 1
       print(count)

    より良いソリューション


    nの最大値は1000なので、3桁の数だけでも構いません.
    最大
  • 個の数字
  • を入力
    n = int(input())
  • 1から99までの
  • if n < 100:
        print(n)	# 99 이하는 입력한 값이 한수의 개수
  • 100からnまでの3桁で、0番のインデックス値と1番のインデックス値の差が1番のインデックス値と2番のインデックス値に等しい場合、等差数列
  • else:
        count = 99
        for i in range(100, n + 1):			# 100부터 n까지 반복
            arr = list(map(int,str(i)))		# 숫자 배열로 변환
            if arr[0] - arr[1] == arr[1] - arr[2]: 	# 차이 값 비교
                count += 1
  • 1~n個のデジタル出力
  • print(count)
    コード#コード#
    n = int(input())
    
    if n < 100:
        print(n)
    else:
        count = 99
        for i in range(100, n + 1):
            arr = list(map(int, str(i)))
            if arr[0] - arr[1] == arr[1] - arr[2]:
                count += 1
        print(count)