题目描述
Description
对于一给定的素数集合 S = {p1, p2, …, pK},如果一个数字,当我们对其做完质因子分解后,其质因子全是来自我们给定的素数集合,则认为这个数字是个丑数。
注意:我们不认为1 是一个丑数。
你的工作是对于输入的集合S去寻找第N个丑数。
Input
第 1 行: 二个被空间分开的整数:K 和 N , 1<= K<=100 , 1<= N<=100,000.
第 2 行: K 个被空间分开的整数:集合S的元素
Output
第N个丑数。
Sample Input
4 19
2 3 5 7
Sample Output
27

思路
为了找第i个丑数,那么一定要比第i-1个丑数大,而且是最小的那一个,可以发现比i-1大的丑数一定是比i-1小的丑数乘某个质数得到的,鉴于质数的数量很少,而丑数的数量很大,我们枚举质数,然后枚举丑数,直到大于第i-1个丑数,记录一下,找到所有的符合条件的丑数以后,找出最小值(也可以在寻找的途中更新最小值),那么这个最小值就是第i个丑数。

代码

 #include<bits/stdc++.h>
using namespace std;
int n,m;
int a[],b[],s[]={};
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
cin>>a[i];
for(int i=;i<=m;i++)
{
int minn=0x7f7f7f7f;
for(int j=;j<=n;j++)
{
while(a[j]*s[b[j]]<=s[i-])
{
b[j]++;
}
if(a[j]*s[b[j]]<minn)
minn=a[j]*s[b[j]];
}
s[i]=minn;
}
cout<<s[m]<<endl;
return ;
}

最新文章

  1. bzoj 1061 志愿者招募 有上下界费用流做法
  2. Selenium通过WebDriver控制IE浏览器出错 Browser zoom level was set to 109%. It should be set to 100%
  3. 利用google api生成二维码名片例子
  4. C#自学笔记总结
  5. 基于 HTML5 WebGL 的 3D 网络拓扑图
  6. 你不得不了解的应用容器引擎---Docker
  7. socke编程
  8. Gradle 1.12 翻译——第十八章. 日志
  9. ||与&amp;&amp;的返回值
  10. linux----------fedora 27 如何打开ssh,可以远程链接
  11. 更新Xcode10与iOS12 遇到的bug:library not found for -lstdc++.6.0.9
  12. nginx rate limit
  13. 线程安全问题.md
  14. 对仿真glbl.v文件的理解
  15. 学习笔记之Lazy evaluation
  16. 微信小程序 按钮点击跳转页面
  17. Codeforces Round #294 (Div. 2)A - A and B and Chess 水题
  18. bootstrap正则表达式验证手机 座机 邮箱
  19. [Leetcode] Binary tree maximum path sum求二叉树最大路径和
  20. Laravel使用ORM操作数据

热门文章

  1. MEAN: AngularJS + NodeJS的REST API开发教程
  2. 20190705-Python数据驱动之DDT
  3. 【5号课堂】scratch制作电子生日贺卡
  4. app实现长按出现弹窗 或者 出现 删除
  5. (转)从0移植uboot (一) _配置分析
  6. Linux通用小技能
  7. (十五)Activitivi5之多用户任务分配
  8. (六)Hibernate的增删改查操作(3)
  9. asp.net类似于js中的setTimeOut()的函数作用?
  10. 关于linux中关在共享文件的NFS 提示错误解决办法