AtCoder Beginner Contest 400の解説記事です。
目次
ABC400 A – ABC400 Party
問題
問題文の要約は以下の通りです。
問題の要約
\(400\) 人の高橋君を \(A\) 行 \(B\) 列の長方形状に隙間なく並べようとしている。正整数 \(A\) が与えられるので、このような並べ方ができるような正整数 \(B\) の値を出力せよ。ただし、そのような正整数 \(B\) が存在しない場合には \(-1\) を出力せよ。
解説
%
を用いて、\(400\) が \(A\) で割り切れるか判定する。」
解説
入力を受け取ります。
# 入力
A=int(input())
\(400\) が \(A\) で割り切れるとき、\(400\) を \(A\) で割った数を出力し、\(400\) が \(A\) で割り切れないとき、 \(-1\) を出力します。
# 400がAで割り切れるとき、400をAで割った数を出力
if 400%A==0:
print(400//A)
# 400 がAで割り切れないとき、-1を出力
else:
print(-1)
解答
# 入力
A=int(input())
# 400がAで割り切れるとき、400をAで割った数を出力
if 400%A==0:
print(400//A)
# 400 がAで割り切れないとき、-1を出力
else:
print(-1)
ABC400 B – Sum of Geometric Series
問題
問題文の要約は以下の通りです。
問題の要約
正整数 \(N, M\) が与えられます。$$X = \sum_{i=0}^{M} N^i$$ としたとき、\(X \leq 10^9\) のときは \(X\) の値を、\(X > 10^9\) のときは文字列 inf
を出力せよ。
解説
和を \(i=0, 1, \cdots , M\) まで順に計算する。
解説
入力を受け取ります。
# 入力
N,M=map(int,input().split())
和を \(i=0, 1, \cdots , M\) まで順に計算します。\(10^9\) を超えたら inf
を出力し終了します。超えずにループが終了したときは最後に答えを出力します。
# 和をi=0~Mまで順に計算
X=0
for i in range(M+1):
X+=N**i
# 10^9を超えたらinfを出力
if X>10**9:
print('inf')
exit()
# 答えを出力
print(X)
解答
# 入力
N,M=map(int,input().split())
# 和をi=0~Mまで順に計算
X=0
for i in range(M+1):
X+=N**i
# 10^9を超えたらinfを出力
if X>10**9:
print('inf')
exit()
# 答えを出力
print(X)