【AtCoder】ABC400解説(Python)

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)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次