前提・実現したいこと
AtCoderのBeginner Contest 227の問題です。
1 から N の番号がついた N 人の人がいます。
人 i はキーエンス本社ビルの建築面積を Si 平方メートルであると予想しました。
キーエンス本社ビルは下図のような形をしています。ただし、a,b はある 正の整数 です。
つまり、キーエンス本社ビルの建築面積は 4ab+3a+3b 平方メートルと表されます。
N 人のうち、この情報のみによって、予想した面積が確実に誤りであるとわかる人数を求めてください。
制約
1 ≤ N ≤ 20
1 ≤ Si ≤ 1000
入力に含まれる値は全て整数である
発生している問題・エラーメッセージ
5
10 20 39 10 10
を入力した際になぜか2となってしまう(本来なら20のみ4ab+3a+3bの形で表せないので1となるはず)のですが、理由がわかりません。
4
10 20 39 10 だと正しく1が出力されるのですが、上の例だとうまくいかない理由を教えていただけると幸いです。よろしくお願いいたします。
該当のソースコード
N = int(input()) S = list(map(int, input().split())) for a in range(1, 143): for b in range(1, 143): x = 4 * a * b + 3 * a + 3 * b for i in S: if i == x: S.remove(i) print(len(S))
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。