【ちょっとづつAtCode】ABC182 B – Almost GCD

ちょっとづつAtCoder

引用

(引用)

問題文
数列 A (A1,A2,A3,…,AN)が与えられます。正の整数 k の GCD 度を、A1,A2,A3,…,ANのうち k で割り切れるものの数と定義します。
2 以上の整数のうち GCD 度が最大になるものを一つ求めてください。 GCD 度が最大のものが複数ある場合どれを出力しても構いません。 

制約
1≤N≤100
2≤Ai≤1000
入力は全て整数

入力
入力は以下の形式で標準入力から与えられる。
N A1A2A3…AN

出力
2 以上の整数のうち GCD 度が最大になるものを一つ出力せよ。GCD 度が最大のものが複数ある場合どれを出力してもよい。

AtCoder Beginner Contest182 B – Almost GCDより引用

入力

入力は以下の形式で標準入力から与えられる。

N
A1A2A3…AN

出力

2 以上の整数のうち GCD 度が最大になるものを一つ出力せよ。GCD 度が最大のものが複数ある場合どれを出力してもよい。

入力例 2

5
8 9 18 90 72

出力例 2

9(もしくは2や3)

9で割り切れる個数4 2で割り切れる個数4 3で割り切れる個数4(GCD度4が最大)

考えてみました

入力

N = int(input())
A = [int(x) for x in input().split()]
"2で割り切れるかな?3で割り切れるかな?の個数を別リストにしてみるか"
m = max(A)
ans = 0
B = []
for k in range(2, m + 1):
    cnt = 0
    for i in A:
        if i % k == 0:
            cnt += 1
    B.append(cnt)
print(B.index(max(B)) + 2)

コメント

タイトルとURLをコピーしました