由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一道电面题
相关主题
问个难题merge k个数组怎样的方法好?
每日一题之毛毛虫和叶子求两个或N个数的最大公约数和最小公倍数
我也来贡献几个面试题divide array into two, sum of difference is min in O(N)
问一道面试题a[i] + b[j] = c[k] 的题有靠谱的答案不?
关于质数(prime number)的算法题贡献几道CS电面题
[合集] 急问一道本周 Microsoft 电面题分享下Google电面题
问个面试题amazon 电面题
find median for k sorted arrays一个电面题
相关话题的讨论汇总
话题: 整除话题: 个数话题: 倍数话题: 10话题: 18
进入JobHunting版参与讨论
1 (共1页)
m**********e
发帖数: 52
1
求1,000,000内不能被array中的任意数整除的数总共有多少个,比如array = [2,4,9,
10], 肯定不能用暴力,应该是减减加加
Y**G
发帖数: 1089
2
用筛法就可以了吧。比如那个例子,先把2的倍数全部去掉,然后在去掉4的倍数(这步
可以优化,因为4的倍数必然是2的倍数),然后在去掉9的倍数,10的倍数(也可以优
化),剩下的就是要的了吧。
m**********e
发帖数: 52
3
应该是用Inclusion–exclusion principle,这里的array size 很小,但总数很大

【在 Y**G 的大作中提到】
: 用筛法就可以了吧。比如那个例子,先把2的倍数全部去掉,然后在去掉4的倍数(这步
: 可以优化,因为4的倍数必然是2的倍数),然后在去掉9的倍数,10的倍数(也可以优
: 化),剩下的就是要的了吧。

P******r
发帖数: 1342
4
小学奥赛题啊。。
Y**G
发帖数: 1089
5
还有一个办法
第一步,先把数组优化,冗余的去掉,如果数组是[2,4,9,10]
去冗余后,数组变成[2, 9]
第二步,求出最小公倍数
2和9的最小公倍数是18
把1000000分成很多段,每段有18个连续的数
[0, ...,17]
[18, ... 35]
...
最后一段是[999990, 999991, ... 999999]不满18个数
每段中,不能被2和9整除的数是18 - 18/2 - 18/9 + 1 = 8
最后一段,有10个数,不能被2和9整除的有: 10 - 10/2 - 10/9 - 10 / (2*9) = 10 -
5 - 1 - 0 = 4
所以总共有8 * (1000000/18) + 4 = 444444个数介于0和1000000(包括0, 不包括
1000000)不能被2, 4, 9, 10整除。

【在 Y**G 的大作中提到】
: 用筛法就可以了吧。比如那个例子,先把2的倍数全部去掉,然后在去掉4的倍数(这步
: 可以优化,因为4的倍数必然是2的倍数),然后在去掉9的倍数,10的倍数(也可以优
: 化),剩下的就是要的了吧。

r*g
发帖数: 186
6
这样行不?
将数组排序为 a[0] <= a[1] <= ... <= a[K]
然后对第k步, 得到count[k], 这里count[k]是对于
1~N个数当中无法被a[0]~a[k]整除的数的个数
然后第k+1步: 需要扣掉count[k]中能被a[k+1]整除的数
的个数:
1. 如果a[k+1]是a[i](0<=i<=k)的倍数:不需要扣除:
因为不能被a[i]整除就一定不能被a[k+1]整除.
2. a[k+1]不是任何之前的数的倍数:
则变为寻找:
"能被a[k+1]整除的数, 但不能被a[0~k]整除"
这相当于寻找 1~N/a[k+1]中无法被a[0~k]整除的元素的个数
(也许可以利用count[k]来得到这个值, 而不用再算一次, 因为
这些元素分布是均匀的, 估计可以简单的乘除得到)

【在 Y**G 的大作中提到】
: 还有一个办法
: 第一步,先把数组优化,冗余的去掉,如果数组是[2,4,9,10]
: 去冗余后,数组变成[2, 9]
: 第二步,求出最小公倍数
: 2和9的最小公倍数是18
: 把1000000分成很多段,每段有18个连续的数
: [0, ...,17]
: [18, ... 35]
: ...
: 最后一段是[999990, 999991, ... 999999]不满18个数

1 (共1页)
进入JobHunting版参与讨论
相关主题
一个电面题关于质数(prime number)的算法题
说说 以前面试遇到的 house robber 变种[合集] 急问一道本周 Microsoft 电面题
问个简单算法题问个面试题
问道面试题find median for k sorted arrays
问个难题merge k个数组怎样的方法好?
每日一题之毛毛虫和叶子求两个或N个数的最大公约数和最小公倍数
我也来贡献几个面试题divide array into two, sum of difference is min in O(N)
问一道面试题a[i] + b[j] = c[k] 的题有靠谱的答案不?
相关话题的讨论汇总
话题: 整除话题: 个数话题: 倍数话题: 10话题: 18