加算された数列の最小値
#お題
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 以上でその変数に収まる範囲なら、どのような値でも構いません。