約数の列挙

#お題

整数 N が与えられます。
N の約数を小さい方から順に改行区切りで出力してください。

 

 

#入力

N

・ 1 行で整数 N が与えられます。

 

 

 

 

#出力

N の約数を小さい方から順に改行区切りで出力してください。

 

 

 

#コード

n = int(input())

for i in range(1,n+1):
    if n % i == 0:
        print(i)

 

 

 

#参考

N = int(input())

for i in range(1, N + 1):
    if N % i == 0:
        print(i)
  • ループ処理でカウント変数を 1 ~ N まで遷移させ、N がカウント変数で割り切れるかどうか判別し、割り切れる場合は改行区切りで出力しています。

約数の列挙

#お題

整数 N が与えられます。
N の約数を小さい方から順に改行区切りで出力してください。

 

 

#入力

N

・ 1 行で整数 N が与えられます。

 

 

 

 

#出力

N の約数を小さい方から順に改行区切りで出力してください。

 

 

 

#コード

n = int(input())

for i in range(1,n+1):
    if n % i == 0:
        print(i)

 

 

 

#参考

N = int(input())

for i in range(1, N + 1):
    if N % i == 0:
        print(i)
  • ループ処理でカウント変数を 1 ~ N まで遷移させ、N がカウント変数で割り切れるかどうか判別し、割り切れる場合は改行区切りで出力しています。

約数の個数

#お題

整数 N が与えられます。
N の約数の個数を出力してください。
約数とは、N を割り切る整数のことを指します。

 

 

#入力

N

・ 1 行で整数 N が与えられます。

 

 

 

#出力

N の約数の個数を出力してください。

 

 

 

#コード

n = int(input())

ans = 0

for i in range(n):
    if n % (i+1) == 0:
        ans += 1

print(ans)

 

 

 

#参考

N = int(input())

div_count = 0
for i in range(1, N + 1):
    if N % i == 0:
        div_count += 1

print(div_count)
  • ループ処理でカウント変数を 1 ~ N まで遷移させ、N がカウント変数で割り切れるかどうか判別し、割り切れる場合は約数としてカウントしています。
 
 
 

1 はどこにある?

#お題

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
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。
・ a_1, a_2, ..., a_N には少なくとも 1 個は 1 が含まれます。

 

 

 

#出力

a_1, a_2, ..., a_N のうち、1 がある位置を先頭から順に改行区切りで出力してください。

 

 

 

#コード

n = int(input())
a = [int(x) for x in input().split()]

cnt = 1

for i in a:
    if i == 1:
        print(cnt)
    cnt += 1

 

 

 

#参考

N = int(input())
a = list(map(int, input().split()))

for i in range(N):
    if a[i] == 1:
        print(i + 1)
  • ループ処理を用いて a[0] ~ a[N-1] を順番に見ていき、1 だった場合はその場所を改行区切りで出力します。
  • 位置を出力するとき、a_1 を 1 番目とするので、i+1 を出力しています。

加算された数列の最小値

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
a_i に i を足したとき、N 個の整数の最小値を出力してください。

 

 

#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

 

 

#出力

a_i に i を足したとき、N 個の整数の最小値を出力してください。

 

 

 

#コード

n = int(input())
a = [int(x) for x in input().split()]
print(a)

b = []
cnt = 1
for i in a:
    b.append(i+cnt)
    cnt += 1

print(b)

print(min(b))

 

 

 

#参考

N = int(input())
a = list(map(int, input().split()))

ans = 10000
for i in range(N):
    ans = min(ans, a[i] + (i + 1))

print(ans)
  • a_i に i を足す際、配列は 0 番目から数えることに注意して引いてください。
  • a[i] += i としてしまうと、a[0] ~ a[N-1] に 1 ~ n をそれぞれ足すはずが、a[1] ~ a[N] に 1 ~ n がそれぞれ足されてしまいます。(さらに、a[N] は配列外参照になってしまいます)
  • 最小値を保持する変数の初期値は 10000 としていますが、例えば a_i が全て 100 だった場合、その最小値は 101 となるので、もし初期値を 101 より小さくしてしまうと、その場合に対応できません。101 以上でその変数に収まる範囲なら、どのような値でも構いません。

加算された数列の最大値

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
a_i に i を足したとき、a_1 , ... , a_N の最大値を出力してください。

 

 

#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 1 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

 


#出力

a_i に i を足したとき、a_1 , ... , a_N の最大値を出力してください。

 

 

 


#コード

n = int(input())
a = [int(x) for x in input().split()]

b = []
cnt = 1
for i in a:
    b.append(i+cnt)
    cnt += 1

print(max(b))

 

 

 


#参考

N = int(input())
a = list(map(int, input().split()))

ans = 0
for i in range(N):
    ans = max(ans, a[i] + (i + 1))

print(ans)
  • a_i に i を足す際、配列は 0 番目から数えることに注意して足してください。
  • a[i] += i としてしまうと、a[0] ~ a[N-1] に 1 ~ n をそれぞれ足すはずが、a[1] ~ a[N] に 1 ~ n がそれぞれ足されてしまいます。(さらに、a[N] は配列外参照になってしまいます。)