0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Paiza問題集】ループメニュー2/数列の列挙

Posted at

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?