日本レジストリサービス(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')
