【USACO题库】3.1.3 Humble Numbers丑数
来源:互联网 发布:中国网络电视台纪实台 编辑:程序博客网 时间:2024/05/16 07:35
好久没写USACO的题解了(-v-)
题目描述
对于一给定的素数集合 S = {p1, p2, ..., pK},
来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。
注意:我们不认为1 是一个丑数。
你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的。
输入要求
第 1 行: 二个被空间分开的整数:K 和 N , 1<= K<=100 , 1<= N<=100,000.
第 2 行: K 个被空间分开的整数:集合S的元素
样例输入
4 19
2 3 5 7
输出要求
单独的一行,写上对于输入的S的第N个丑数。
样例输出
27
这题我刚开始是用暴力去枚举再排序,然后就炸了。。。
正解:
根据题目可以知道,当一个丑数乘以另一个丑数时,得出的结果仍然为丑数。
所以我们可以设一个数组F,F[i]表示从小到大的第i个丑数是多少。
为了方便计算,把F[0]设为1,之后从小到大依次构造丑数。
根据以上所述,可以设一个B数组,B[i]表示第i个丑数构造新的丑数所要乘的F数组的数的位置(仔细理解)
每次构造新的丑数时,就取一个最小的A[i]*F[B[i]]。
因为不同的构造方法可能会产生相同的数,所以算出F[i]后就把所有结果等于F[i]的B[i]加1。
1 0
- 【USACO题库】3.1.3 Humble Numbers丑数
- 【USACO题库】3.1.3 Humble Numbers丑数
- 1278. 【USACO题库】3.1.3 Humble Numbers丑数
- USACO 3.1.3 Humble Numbers 丑数
- 【USACO题库】3.1.3 Humble Numbers丑数(模拟+数学)
- USACO 3.1 Humble Numbers丑数
- USACO 3.1 Humble Numbers丑数
- USACO 3.1 丑数 Humble Numbers
- USACO : Humble Numbers (丑数)
- USACO 3.1 Humble Numbers丑数_优先队列
- usaco ★Humble Numbers 丑数
- Humble Numbers 丑数
- Humble Numbers(丑数)
- USACO 3.1.3 Humble Numbers
- USACO 3.1 Humble Numbers (humble)
- USACO 3.1 Humble Numbers
- USACO 3.1 humble numbers
- USACO 3.1 Humble Numbers
- 串口通讯
- 重新认识电脑硬件(二)-主板
- 机器学习小组知识点13:泊松分布(Poisson Distribution)
- 通过关系找节点、创建节点,插入节点,设置节点属性
- String源码分析之getByte乱码
- 【USACO题库】3.1.3 Humble Numbers丑数
- C++ Set常用用法
- 33-3-1
- 深度搜索
- 11.11后的一天开通了我的博客
- C#中对数据库的基本操作(增删改以及调用存储过程)
- markdown与各种网页的各种地方改变字号颜色的方法
- java多线程
- 最长公共回文子序列 【NOIP2016提高A组集训第14场11.12】