Translate:USACO/humble
来源:互联网 发布:博睿软件测试 编辑:程序博客网 时间:2024/06/06 04:35
Translate:USACO/humble
来自"NOCOW"
Humble Numbers丑数
译 by tim green
目录
- 1 描述
- 2 格式
- 3 SAMPLE INPUT
- 4 SAMPLE OUTPUT
[编辑]描述
对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。
注意:我们不认为1 是一个丑数。
你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的。
[编辑]格式
PROGRAM NAME: humble
INPUT FORMAT:
(file humble.in)
第 1 行: 二个被空格分开的整数:K 和 N , 1<= K<=100 , 1<= N<=100,000.
第 2 行: K 个被空格分开的整数:集合S的元素
OUTPUT FORMAT:
(file humble.out)
单独的一行,写上对于输入的S的第N个丑数。
[编辑]SAMPLE INPUT
4 192 3 5 7
[编辑]SAMPLE OUTPUT
27
我们在数组hum中计算出前n个丑数。为了实现起来更简单,我们把1也作为一个丑数,算法也要因此略微调整一下。
当我们已知前k个丑数,想得到第k+1个,我们可以这样做:
对于每个质数p寻找最小的丑数h 使得 h * p 比上一个丑数大取我们找到的 h * p 中最小的一个:它就是下一个丑数
为了使搜索更快,我们可以为每个质数维护一个索引“pindex”表示每个质数已经乘到了哪个丑数,每次都从那里开始,而不是再从头再来。
(官方源码参见参考代码-C)
var dui:array[0..1000000] of longint;a,num:array[0..100000] of longint;n,m,i,j,k,l,sum:longint;function min(x,y:longint):longint;begin if x<y then exit(x); exit(y);end;begin assign(input,'humble.in'); assign(output,'humble.out'); reset(input); rewrite(output); readln(k,n); for i:=1 to k do read(a[i]); num[0]:=1; for i:=1 to n do begin num[i]:=maxlongint; for j:=1 to k do begin while num[dui[j]]*a[j]<=num[i-1] do inc(dui[j]); num[i]:=min(num[i],num[dui[j]]*a[j]); end; end; {for i:=1 to n do writeln(num[i]);} writeln(num[n]); close(input); close(output);end.
- Translate:USACO/humble
- USACO humble
- USACO 3.1 Humble Numbers (humble)
- USACO 3.1 Humble Numbers
- USACO 3.1 humble numbers
- 【其他】【USACO】Humble Numbers
- USACO序列一-humble
- usaco humble Numbers
- USACO 3.1 Humble Numbers
- USACO Humble Number
- usaco Humble Numbers
- usaco 3.1 humble
- USACO:Humble Numbers
- USACO-Humble Numbers
- USACO Humble Number
- USACO--3.1Humble Numbers
- USACO 3.1 Humble Numbers
- USACO Humble Numbers
- ubuntu 手动编译安装lighttpd配置运行php
- GRASP (object-oriented design)
- Data Guard Switchover Unix shell script
- 根据坐标点获取屏幕图像
- 几个字符串操作方法
- Translate:USACO/humble
- Bada学习-(十六)仿真模拟器
- 几个判断方法
- 数据库常用操作
- 输出一种图形
- 深入浅出之正则表达式(一)
- Two PC SQL Server Synchronise
- lambda过程作为返回值的例子-分析,及一个作用域的例子
- 线程里面访问类的私有成员变量flag,不报错,诧异,求解!