白駿1773花火ショー


質問する


3週間が過ぎたことを記念して、学生たちは店で1月1日以降の安い爆竹を買って、爆竹を流しています.
花火ショーの間、N人の学生が爆竹を鳴らした.そして、このN人の学生は誰もが一定の周期で爆竹を鳴らす.もちろん、学生一人一人のこの周期は同じかもしれないし、違うかもしれない.そして私たちは秒単位で観察し、爆竹も秒単位で爆発した.
助教を手伝って、爆竹の演技が終わる前に、夜空の爆竹が爆発するのをどれだけの時間で見ることができるか知りたい.
入力
第1列目は爆竹を鳴らす学生数N(1≦N≦100)と爆竹の演技を終了する時間C(1≦C≦200000)を与えた.次のN行では、学生たちが爆竹を鳴らす周期が1行1本.周期は1以上、C以下の自然数である.
しゅつりょく
花火ショーが始まる前と終わる前に、花火が見える総時間を夜空に出力します.
入力例1
2 20
4
6
サンプル出力1
7
ヒント
2
1 2 1 1 1 2 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 2 3 4 5 6 7
上図1、2の4、6、8、12、16、18、20秒以内に花火が夜空に咲きます.12秒で2つの爆竹が同時に空で爆発しますが、1回注意してください.

解法


PyPy 3をコミットしてタイムアウトの問題を解決しました.
C+1サイズのリストを事前に宣言して使用しました.
複文では,入力された周期をその周期に繰り返すことが重要である.

コード#コード#

import sys

N, C = map(int, input().split())
li = [False] * (C + 1)
result = 0
for _ in range(N):
    x = int(sys.stdin.readline())
    for i in range(x, C + 1, x):
        if not li[i]:
            li[i] = True
            result += 1
print(result)
白駿1773花火ショー