Paiza問題集
Pythonで回答
ループメニュー2/数列の列挙
Step01 各桁の和
"""
各桁の和
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__digit_sum
問題
10進数で表された整数Nが与えられます
整数Nの各桁の和を計算し、出力してください
"""
N = int(input())
total = 0
while N > 0:
total += N % 10
N //= 10
print(total)
Step02 カウント変数を使った計算
"""
カウント変数を使った計算
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__index_multi
問題
1行目に整数Nが与えられます。
2行目にN個の整数 M_1, M_2, ..., M_N が与えられます
i番目のMをM_iとするとき、M_i * iを改行区切りで出力してください
"""
N = int(input())
M = list(map(int, (input().split())))
for i in range(N):
print(M[i]*(i+1))
Step03 2で何回割れる?
"""
2で何回割れる?
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__div_two
問題
Nが何回2で割れるかを求め、出力してください
"""
N = int(input())
div_count = 0
while N % 2 == 0:
div_count += 1
N //= 2
print(div_count)
Step04 任意の数で何回割れる?
"""
任意の数で何回割れる?
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__div_m
問題
整数N,Mが与えられます。
Nが何回Mで割れるかを求め、出力してください
"""
N, M = map(int, (input().split()))
div_count = 0
while True:
if N % M == 0:
div_count += 1
N //= M
else:
break
print(div_count)
Step05 10進数から2進数に変換
"""
10進数から2進数に変換
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__conv_binary
問題
10進数で表された整数Nが与えられます
Nを2進数に変換して出力してください
"""
print(f"{int(input()):b}")
Step06 10進数からM進数に変換
"""
10進数からM進数に変換
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__conv_nbase
問題
10進数で表された整数N,Mが与えられます
NをM進数に変換して出力してください
"""
N, M = map(int, (input().split()))
total = ""
while N > 0:
total += str(N % M)
N //= M
print(total[::-1])
Step07 NがMずつ増えたときにいつKを越える?
"""
NがMずつ増えたときにいつKを越える?
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__inc_m
問題
整数N,M,Kが与えられます
NがMずつ増えるとき、何回目にKを越えるか出力してください
"""
N, M, K = map(int, (input().split()))
count = 0
while N <= K:
N += M
count += 1
print(count)
Step08 毎日増加するお金
"""
毎日増加するお金
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__inc_percent
問題
現在所持金をA円持っています
所持金が毎日10%ずつ増えるとき、何日後にB円を超えるか出力してください
また、増加するお金は小数点以下切り捨てで考えることとします
例として、所持金が831円のとき、10%は83.1円ですが、増加するお金は83円です
"""
A, B = map(int, input().split())
days = 0
while A <= B:
A = int(A * 1.1)
days += 1
print(days)
Step09 階乗の計算
"""
階乗の計算
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__factorial
問題
整数Nが与えられます
Nの階乗N!を計算して出力してください
"""
N = int(input())
num = 1
for i in range(N, 0, -1):
num *= i
print(num)
Step10 階乗の末尾に0はいくつ付く?
"""
階乗の末尾に0はいくつ付く?
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__factorial_zero
問題
整数Nが与えられます
Nの階乗N!の末尾に0がいくつ付くか求め、出力してください
"""
N = int(input())
zero_counter = 0
while N > 0:
zero_counter += N//5
N //= 5
print(zero_counter)
Step11 加算された数列の最大値
"""
加算された数列の最大値
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__add_maxseq
問題
N個の整数 a_1, a_2, .., a_N が与えられます
a_iにiを足したとき、a_1 , .. , a_Nの最大値を出力してください
"""
N = int(input())
a = list(map(int, input().split()))
max_num = 0
for i in range(N):
max_num = max(max_num, a[i]+(i+1))
print(max_num)
Step12 加算された数列の最小値
"""
加算された数列の最小値
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__add_minseq
問題
N個の整数 a_1, a_2, .., a_N が与えられます
a_iにiを足したとき、N個の整数の最小値を出力してください
"""
N = int(input())
a = list(map(int, input().split()))
min_num = 200
for i in range(N):
min_num = min(min_num, a[i]+(i+1))
print(min_num)
Step13 1はどこにある?
"""
1はどこにある?
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__seq_one
問題
N個の整数 a_1, a_2, ..., a_Nが与えられます
a_1, a_2, .., a_N のうち、1がある位置を先頭から順に改行区切りで出力してください
a_1を1番目とし、a_1, a_2, .., a_N には少なくとも1個は1が含まれます
"""
N = int(input())
a = list(map(int, input().split()))
one_counter = 0
for i in range(N):
if a[i] == 1:
one_counter += 1
print(i+1)
Step14 約数の個数
"""
約数の個数
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__divsor_count
問題
整数Nが与えられます
Nの約数の個数を出力してください
約数とは、Nを割り切る整数のことを指します
"""
N = int(input())
div_num = 1
div_counter = 0
while div_num <= N:
if N % div_num == 0:
div_counter += 1
div_num += 1
print(div_counter)
Final問題 数列の列挙
"""
数列の列挙
https://paiza.jp/works/mondai/loop_problems2/loop_problems2__divsor_print
問題
整数Nが与えられます
Nの約数を小さい方から順に改行区切りで出力してください
"""
N = int(input())
div_num = 1
while div_num <= N:
if N % div_num == 0:
print(div_num)
div_num += 1