日本レジストリサービス(JPRS)プログラミングコンテスト2023(AtCoder Beginner Contest 324)の解説記事です。
ABC324 A – Same
問題
問題文の要約は以下の通りです。
問題の要約
\(N\) 個の整数 \(A_1, A_2, \cdots, A_N\) がすべて等しいか判定せよ。
制約
・\(2 \le N \le 100\)
・\(1 \le A_i \le 100\) (\(1 \le i \le 100\))
・入力は全て整数
入力
\(N\)
\(A_1\) \(A_2\) \(\cdots\) \(A_N\)
出力
すべて等しいなら Yes
を、そうでなければ No
を出力せよ。
解説
set
を使用して要素の個数を数える。
解説
\(N\) は使用しないのでinput()
だけ行い、変数には格納しません。
# A_iの個数(使用しない)
input()
\(A_i\) をset
型で受け取り要素の個数が1であればYes
を、そうでなければ No
を出力します。
# 出力
print('Yes' if len(set(input().split()))==1 else 'No')
解答
# A_iの個数(使用しない)
input()
# 出力
print('Yes' if len(set(input().split()))==1 else 'No')
ABC324 B – 3-smooth Numbers
問題
問題文の要約は以下の通りです。
問題の要約
正の整数 \(N\) が与えられたとき、 \(N=2^x3^y\) を満たす整数 \(x, y\) が存在するならYes
、そうでなければNo
と出力せよ。
制約
・\(1 \le N \le 10^{18}\)
・\(N\) は整数
入力
\(N\)
出力
条件を満たす整数 \(x, y\) が存在するならYes
、そうでなければNo
と出力せよ。
解説
条件は \(N\) が2
、3
以外の素因数をもたないことと同値です。つまり、\(N\) を2
、3
で割れるだけ割り、結果が1
のとき、Yes
、そうでなければNo
と出力します。
解説
入力 \(N\) をint
型として受け取ります。
# 入力
N=int(input())
まず、 \(N\) が2
で割り切れる間、2
で割ります。2
で割り切れなくなったら、\(N\) が3
で割り切れる間、3
で割ります。
# N が2で割り切れる間、2で割る
while N%2==0:
N=N//2
# N が3で割り切れる間、3で割る
while N%3==0:
N=N//3
\(N\) が1
のとき、Yes
、そうでなければNo
と出力します。
# N が1のときYes、そうでなければNoと出力
print('Yes' if N==1 else 'No')
解答
# 入力
N=int(input())
# N が2で割り切れる間、2で割る
while N%2==0:
N=N//2
# N が3で割り切れる間、3で割る
while N%3==0:
N=N//3
# N が1のときYes、そうでなければNoと出力
print('Yes' if N==1 else 'No')