USACO 3.1 Humble Numbers丑数
来源:互联网 发布:linux输入法设置中文 编辑:程序博客网 时间:2024/04/29 18:26
USACO 3.1 Humble Numbers丑数
Time Limit:12000MS Memory Limit:65536K
Total Submit:151 Accepted:36
Case Time Limit:1000MS
Description
对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。
注意:我们不认为1 是一个丑数。
你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的。
Input
第 1 行: 二个被空格分开的整数:K 和 N , 1<= K<=100 , 1<= N<=100,000.
第 2 行: K 个被空格分开的整数:集合S的元素
Output
单独的一行,写上对于输入的S的第N个丑数。
Sample Input
4 192 3 5 7
Sample Output
27
把1放入优先队列,中每次从优先队列中取出一个元素,k,把2k, 3k, 5k, 7k放入优先队列中从2开始,取出的第n个元素就是第n大丑数
const maxn=300000;var a,s:array[0..maxn] of longint; n,k,i,j,l:longint;procedure up(i:longint);var done:boolean;begin if i=1 then exit; repeat done:=false; if a[i]<a[i div 2] then begin a[0]:=a[i]; a[i]:=a[i div 2]; a[i div 2]:=a[0]; end else done:=true; i:=i div 2; until(i=1) or done;end;procedure inst(x:longint);begin inc(l); a[l]:=x; up(l);end;procedure down(i:longint);var done:boolean;begin done:=false; if 2*i>l then exit; repeat i:=2*i; if (i+1<=l) and (a[i+1]<a[i]) then inc(i); if a[i div 2]>a[i] then begin a[0]:=a[i]; a[i]:=a[i div 2]; a[i div 2]:=a[0]; end else done:=true; until (2*i>l) or done;end;procedure delt(i:longint);var x,y:longint;begin x:=a[i]; y:=a[l]; dec(l); if i=l+1 then exit; a[i]:=y; if y<x then up(i) else down(i);end;procedure main;var i,j:longint; t:int64;begin l:=1; for i:=1 to n+1 do begin t:=a[1]; for j:=1 to k do if t*s[j]<maxlongint then inst(t*s[j]); delt(1); while t=a[1] do delt(1); end; writeln(t);end;begin readln(k,n); a[1]:=1; for i:=1 to k do read(s[i]); main;end.
0 0
- 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.3 Humble Numbers丑数
- 【USACO题库】3.1.3 Humble Numbers丑数
- USACO 3.1 Humble Numbers丑数_优先队列
- 1278. 【USACO题库】3.1.3 Humble Numbers丑数
- usaco ★Humble Numbers 丑数
- Humble Numbers 丑数
- 【USACO题库】3.1.3 Humble Numbers丑数(模拟+数学)
- Humble Numbers(丑数)
- USACO 3.1 Humble Numbers (humble)
- USACO 3.1 Humble Numbers
- USACO 3.1 humble numbers
- USACO 3.1 Humble Numbers
- USACO--3.1Humble Numbers
- vggnet学习资料整理
- 学习笔记 android开发之JNI
- WebStorm安装与使用
- 【elastic-job】elastic-job部署以及简单例子
- 可复用面向对象软件基础——设计模式(六)之原型模式
- USACO 3.1 Humble Numbers丑数
- ADB WIFI Plugin——甩掉数据线,让 APP 可以无线调试
- 警告:MySQL-server-5.5.46-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
- ubuntu修改DNS重启网络服务
- 洛谷 1030 先序排列
- 第2章使用find和xargs
- 2016.12.15集成支付宝和微信最新的坑(不断更新)
- 租用游艇问题
- haartraining生成.xml文件过程