For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all numbers whose prime factors are a subset of S. This set contains, for example, p1, p1p2, p1p1, and p1p2p3 (among others). This is the set of `humble numbers' for the input set S. Note: The number 1 is explicitly declared not to be a humble number.
Your job is to find the Nth humble number for a given set S. Long integers (signed 32-bit) will be adequate for all solutions.
PROGRAM NAME: humble
INPUT FORMAT
| Line 1: | Two space separated integers: K and N, 1 <= K <=100 and 1 <= N <= 100,000. |
| Line 2: | K space separated positive integers that comprise the set S. |
SAMPLE INPUT (file humble.in)
4 19 2 3 5 7
OUTPUT FORMAT
The Nth humble number from set S printed alone on a line.
SAMPLE OUTPUT (file humble.out)
27
思路:
一个新的humble number可以从已得到的序列得到:H(n+1) = min{ H(i) * prime(j) > H(n), 0 <= i <= n, 0 <= j < k }
显然,对于prime[x],humb中有一个对应的起始位置nxpos[x](上一次找到这里发现H(nxpos[x]) * prime[x] > H(n + 1)),那么下次可以接着往下找,而不是从头开始找
本文介绍了一种算法,用于找出由特定质数组合而成的第N个谦逊数。通过跟踪每个质数对应的序列位置,实现了高效查找。
1051

被折叠的 条评论
为什么被折叠?



