编程挑战题 - 最小合成数
时间:2014-03-27
来源:互联网
见咁多人就问一条简单问题吧
如果给定一些质数, 例如2, 3, 5, 7
计算出大於或等於指定数字的最小合成数, 而合成数的质因数必须为上述指定的质数
input
n k: n为给定的质数个数, k为test case数目
并有以下条件:
1 <= n <= 10^3
1 <= k <= 10^3
[a ... z]: n个质数并有条件: 1 <= a <= 10^6
p: test case,条件: 10 <= p <= 10^12
input:
4 5
2 3 5 7
31
42
85
64
48
output:
32
42
90
64
48
解释:
32 = 2 ^ 5
42 = 2 * 3 * 7
90 = 2 * 3 ^ 2 * 5
64 = 2 ^ 6
48 = 2 ^ 4 * 3
[ 本帖最后由 Susan﹏汪汪 於 2014-3-14 01:07 PM 使用 编辑 ]
作者: Susan﹏汪汪 发布时间: 2014-03-27
a <= n <= b
每个测试案例数值 k,它的范围:
c <= k <= d
亦即请给出 a, b, c 及 d 的值。此等范围对选择算法有好大影响。
作者: fitcat07 发布时间: 2014-03-27
请加上数值范围:
a
第1000个质数系7927
[ 本帖最后由 Susan﹏汪汪 於 2014-3-14 12:58 PM 使用 编辑 ]
作者: Susan﹏汪汪 发布时间: 2014-03-27
应该冇错了
第1000个质数系7927

冇比 a - d 嘅数值喎...
作者: fitcat07 发布时间: 2014-03-28
???

冇比 a - d 嘅数值喎...
[ 本帖最后由 Susan﹏汪汪 於 2014-3-14 03:56 PM 使用 编辑 ]
作者: Susan﹏汪汪 发布时间: 2014-03-28
睇嚟好似得番暴力解一途...
作者: fitcat07 发布时间: 2014-03-28
有冇现成算法?
睇嚟好似得番暴力解一途...
就连关键字系咩都唔清楚
作者: Susan﹏汪汪 发布时间: 2014-03-28
其实之前汪汪都问过了(之前写FFT算法时需要用到)
见咁多人就问一条简单问题吧
如果给定一些质数, 例如2, 3, 5, 7
计算出大於或等於指定数字的最小合成数, 而合成数的质因数必须为上述指定的质数
input
n k: n为给 ...
可否放落二元树做 search,具体方法如下,如是 prime number 有 2 3 5 7, build the binary tree as below:
/ \
2 3
/ \ / \
2 3 3 5
/ \ / \ / \ / \
2 3 3 5 3 5 5 7
....
直至左面最细数值的 node 的 value >= 最细 test case 的 value, 最右面的 node 的 value >= 最大 test case 的 value
然后对所有 test cases 做 binary search,找到就没有问题,找不到就 search 最接近的

作者: assembly.jc 发布时间: 2014-03-28

作者: Susan﹏汪汪 发布时间: 2014-03-28
Search过好多次
就连关键字系咩都唔清楚

作者: fitcat07 发布时间: 2014-03-28
我谂不如将呢题放入 SPOJ,等尐神人帮你做,你话好唔好?


作者: Susan﹏汪汪 发布时间: 2014-03-28

不过,如果要出,我谂要将范围定细一尐,等自己嘅程式都可以在限时内完成。并先放入 Tutorial,等待神人做完,作为参考。
然后,将神人写嘅程式,代入原本范围测试,再定下新嘅时间,放入 Classical,再等待更强嘅神人。

作者: fitcat07 发布时间: 2014-03-28
15呢

对,这行不通

I have a question, Are there test cases that is not produced by given prime numbers? Say, given prime number, 2, 3, 5, 7, but the given the test case is 121 = 11 x 11?
作者: assembly.jc 发布时间: 2014-03-28
Hi Susan,
对,这行不通

I have a question, Are there test cases that is not produced by given prime numbers? Say, given prime number, 2, 3, 5, 7, but the given the test case is 121 = ...
输出125
作者: Susan﹏汪汪 发布时间: 2014-03-28
作者: fitcat07 发布时间: 2014-03-28
放上 stackoverflow.com 度问,应该好快有人答。一试无妨。
作者: Susan﹏汪汪 发布时间: 2014-03-28
如果test case出现121
输出125
作者: assembly.jc 发布时间: 2014-03-28
为何不是 122 呢?
作者: Susan﹏汪汪 发布时间: 2014-03-28
其实之前汪汪都问过了(之前写FFT算法时需要用到)
见咁多人就问一条简单问题吧
如果给定一些质数, 例如2, 3, 5, 7
计算出大於或等於指定数字的最小合成数, 而合成数的质因数必须为上述指定的质数
input
n k: n为给 ...
作者: a8d7e8 发布时间: 2014-03-28
实际应用真的有需要处理 10^12 咁大既 case???

作者: Susan﹏汪汪 发布时间: 2014-03-28
作者: Susan﹏汪汪 发布时间: 2014-03-28
只系提升难度姐

作者: a8d7e8 发布时间: 2014-03-28
我谂如果为咗加速 FFT, 咁不如在有可能应用到的范围内做 table 算咋..............
对於一个96000的data size(高标准音讯档的1秒)
都有可能处理超过192000长的data
作者: Susan﹏汪汪 发布时间: 2014-03-28
如果无, 可能有更有效方法做. 或者基本上大多数用 2^n 已经搅掂咁点解仲要搵最小合成数?
除非 - 你做紧一个 general real-time fft library....
就算系FFT
对於一个96000的data size(高标准音讯档的1秒)
都有可能处理超过192000长的data
作者: a8d7e8 发布时间: 2014-03-28
上例非 2^n
192000 / 5^3 = 1536
1536 / 2^9 = 3
多零尾用 5 除, 双数尾用 2 除, 剩返落嚟就算唔系 2,3,5,7 都可能可以用 table lookup 搵.
除非系质数, 或者大质数既合成数.
有几多资料会用呢啲长度呢?
对! data size 可能好大, 但系 arbitrary data size 有无需要准确到 1?
如果无, 可能有更有效方法做. 或者基本上大多数用 2^n 已经搅掂咁点解仲要搵最小合成数?
除非 - 你做紧一个 general real-time fft libr ...
作者: a8d7e8 发布时间: 2014-03-28
对! data size 可能好大, 但系 arbitrary data size 有无需要准确到 1?
如果无, 可能有更有效方法做. 或者基本上大多数用 2^n 已经搅掂咁点解仲要搵最小合成数?
除非 - 你做紧一个 general real-time fft libr ...
作者: Susan﹏汪汪 发布时间: 2014-03-28
补充:
上例非 2^n
192000 / 5^3 = 1536
1536 / 2^9 = 3
多零尾用 5 除, 双数尾用 2 除, 剩返落嚟就算唔系 2,3,5,7 都可能可以用 table lookup 搵.
除非系质数, 或者大质数既合成数.
有几多资料 ...
可能会有大质数的情况出现
作者: Susan﹏汪汪 发布时间: 2014-03-28
你个算法同佢比较边个快啲?
对一些通常输入的data size系可以任意长度(例如图片)
可能会有大质数的情况出现
作者: a8d7e8 发布时间: 2014-03-28
http://www.fftw.org/
你个算法同佢比较边个快啲?

作者: Susan﹏汪汪 发布时间: 2014-03-28
佢冇实际的时间图

作者: a8d7e8 发布时间: 2014-03-28
佢 claim "Arbitrary-size transforms (Sizes with small prime factors are best, but FFTW uses O(N log N) algorithms even for prime sizes)".见佢好耐之前做落啲 benchmark power of 2 同 intel ipp 有得 ...
至少在计算44100 size的data绝对不会超过1秒(即话可实时计算音乐的freq)
个library完全用c++ template写成而且唔大
所以汪汪还想移植到javascript
作者: Susan﹏汪汪 发布时间: 2014-03-28
http://stackoverflow.com/questions/6663222/doing-fft-in-realtime
"It's based on the fact that once you have performed a fourier transform for the last N samples, and a new sample arrives, you can "undo" the effect of the oldest sample, and apply the effect of the latest sample, in a through the fourier data! This means that the sliding DFT performance is O(n)"
不过汪汪的FFT可以在合理时间内完成
至少在计算44100 size的data绝对不会超过1秒(即话可实时计算音乐的freq)
个library完全用c++ template写成而且唔大
所以汪汪还想移植到javascript
http://i.discuss.co ...
作者: a8d7e8 发布时间: 2014-03-28
呢度提到用 sliding DFT O(n):
http://stackoverflow.com/questions/6663222/doing-fft-in-realtime
"It's based on the fact that once you have performed a fourier transform for the last N samples, and a ...
在计算FFT时如果只是要求单点的freq
复杂度就是O(n)
作者: Susan﹏汪汪 发布时间: 2014-03-28
真正应该会一 block block 咁计? 如果系咁就唔需要逐点 sample 计.
佢果种系取巧的方法
在计算FFT时如果只是要求单点的freq
复杂度就是O(n)
作者: a8d7e8 发布时间: 2014-03-28
我之后也在思考这个问题.......用逐个 sample 计算比较一 block sample 计算既 big-O 好似不太公平. 以及真正的应用会否每个 sample 也用 fft 去计..
真正应该会一 block block 咁计? 如果系咁就唔需要逐点 samp ...
但实际应用就一定要计晒全block data
因为例如做convolution、或者做声音的变频
都要为全部点的freq做操作
作者: Susan﹏汪汪 发布时间: 2014-03-28
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28