[伯俊]1065 Python(単数)



コード#コード#


def hansu(num):
    count = 0
    for i in range(1, num+1):
        if i<100:
            count += 1
        else:
            num_list = list(map(int, str(i)))
            if num_list[1]-num_list[0] == num_list[2]-num_list[1]:
                count += 1
    return count

if __name__ == "__main__":
    n = int(input())
print(hansu(n))

に答える


1以上、n以下の数を求める関数は以下の通りである.
def hansu(num):
    count = 0
    for i in range(1, num+1):
        if i<100:
            count += 1
        else:
            num_list = list(map(int, str(i)))
            if num_list[1]-num_list[0] == num_list[2]-num_list[1]:
                count += 1
    return count
まず、1つの数をゼロに初期化します.
1つの数がNより小さいかどうかを繰り返しチェックします.
100未満の数(ex.99)は1つの数でなければならないのでcount+=1です.
その他の場合は、100以上、1000以下です.
num_list[1]-num_list[0] == num_list[2]-num_list[1]
等差数列か否かを判別する.
1000の場合は等差数列ではなく,考慮する必要がないので,擬似条件式で等差数列であると判別できる.