321
社区成员




已知存在集合A包含n个整数,从1到n。 存在m个整数a[1..m]。 在集合A中去除这m个整数的的倍数。 输出集合中包含的元素的个数。
第一行输入n,m。(1<=n<=1e9,1<=m<=10) 第二行输入m个32位整数。
输出集合中包含元素的个数。
例如:n,m,arr = 94088440, 2, [515, 252],输出 93533102
嗯,这个例如是老顾自己加的,也是第一个用例,知道有大数即可。
n,m = map(int,input().split())
arr = list(map(int,input().split()))
u = set()
for v in arr:
u = u.union(set(range(v,n+1,v)))
print(n - len(u))
而 es6 中,也追加了 Set 的支持,所以还是很友好的,不过对于大数直接转 Set ,还是比较费劲,容易超出内存
a = Array.from(readline().split(' ')).map(x => parseInt(x))
b = Array.from(readline().split(' ')).map(x => parseInt(x))
z = new Set()
for (var i = 0 ; i < a[1] ; i ++){
for (var j = 0; j < Math.floor(a[0] / b[i]);j++)
z.add(b[i] * (j + 1))
}
print(a[0] - z.size)