题目:
1026: 丑数

Time Limit: 1000 MS Memory Limit: 65536 KB

Total Submit: 257 Accepted: 112 Page View: 1467

Submit Status Discuss

Description

丑数就是这个数的质因子只有2,3,5,7这四个,除此之外不再含有其它

别的质因子。

注意1也被认为是丑数.丑数的前20个为

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... ;

Input

每行输入一个N,1 <= N <= 5842,N为0时输入结束.

Output

输出相应的第N个丑数.

Sample Input

Raw

1

2

3

4

11

12

13

21

22

23

100

1000

5842

0

Sample Output

Raw

1

2

3

4

12

14

15

28

30

32

450

385875

2000000000

Source

SWUST




解题心得:
1、一开始想的是用一个数多次除尽2、3、5、7,最后能够得到1则是丑数,后来想了想,只要用1不停的乘上2、3、5、7就可以得到丑数,但是题目是对于第几个丑数的提问,所以我们需要对于得到的丑数进行一个排序,去重。但是由于数据量比较大,这样明显是不行的。所以需要在去重、排序的部分进行优化。
2、怎么优化呢,这里有一个很神奇的操作,就是把已经排好序的一个丑数列(这里直接用的1),(用1)乘上2、3、5、7,找出乘积中最小的,排在数列的最后面,然后再将之前选中的最小的那个数在数列中的位置向后移动一位,因为我们每次都是将最小的那个数放进数列之中,所以乘上2、3、5、7的部分和数列的最后一个相比只会等于或者大于它,等于的直接在位置中向后移动一位,大于的找出最小的放入,最后得到的就是一个有序的数列。


#include<bits/stdc++.h>
using namespace std; long long Min(long long p1,long long p2,long long p3,long long p4)
{
long long temp1,temp2;
temp1 = min(p1,p2);
temp2 = min(p3,p4);
return min(temp1,temp2);
}
int main()
{
int num[6000];
num[1]= 1;
long long p1=1,p2=1,p3=1,p4=1;
int cnt = 1;
while(cnt<=5842)
{ //这里是核心算法,注意不能将if写成else if的形式,因为可能出现和最后一位重合的部分需要直接向后移动一位,也就是去重
long long v = Min(num[p1]*2,num[p2]*3,num[p3]*5,num[p4]*7);
if(v == num[p1]*2)
p1++;
if(v == num[p2]*3)
p2++;
if(v == num[p3]*5)
p3++;
if(v == num[p4]*7)
p4++;
num[++cnt] = v;
}
long long N;
while(scanf("%lld",&N) && N)
printf("%d\n",num[N]);
}

数学算法:poweroj1026-丑数(根据固定倍数得到从小到大的序列)的更多相关文章

  1. 洛谷P2723 丑数 Humble Numbers

    P2723 丑数 Humble Numbers 52通过 138提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 对于一给定的素数 ...

  2. Luogu2723丑数Humble Numbers【归并排序】

    Luogu2723丑数Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包 ...

  3. C语言程序设计100例之(14):丑数

    例14   丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个 ...

  4. 洛谷P2723 丑数 Humble Numbers [2017年 6月计划 数论07]

    P2723 丑数 Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包括, ...

  5. 九度OJ 1214 寻找丑数【算法】

    题目地址:http://ac.jobdu.com/problem.php?pid=1214 题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因 ...

  6. 笔试算法题(20):寻找丑数 & 打印1到N位的所有的数

    出题:将只包含2,3,5的因子的数称为丑数(Ugly Number),要求找到前面1500个丑数: 分析: 解法1:依次判断从1开始的每一个整数,2,3,5是因子则整数必须可以被他们其中的一个整除,如 ...

  7. 丑数<数学技巧>

    题意:丑数就是质因子只有2,3,5 ,7,的数,另外1也是丑数.求第n(1=<n<=5842)个丑数,n=0,结束. 思路:.3.5或者7的结果(1除外).那么,现在最主要的问题是如何排序 ...

  8. java算法之超级丑数

    问题描述: 写一个程序来找第 n 个超级丑数. 超级丑数的定义是正整数并且所有的质数因子都在所给定的一个大小为 k 的质数集合内. 比如给你 4 个质数的集合 [2, 7, 13, 19], 那么 [ ...

  9. 算法习题---5.7丑数(Uva136)

    一:题目 丑数是指不能被除了2,,5以外的素数整除的数.将丑数从小到大排序 ,,,,,,,,,,,.... 求第1500个丑数 (一)求解方法 对于任意丑数x,他的2x,3x,5x都是丑数. 二:代码 ...

随机推荐

  1. spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案

    经常出现这问题一定是非spring生态圈的@标签 没被spring引入,如mybatis等 因为在默认情况下只能扫描与控制器在同一个包下以及其子包下的@Component注解,以及能将指定注解的类自动 ...

  2. BIO,NIO,AIO的理解

    BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善. NIO: ...

  3. Cmd命令 关机

    at 22:00 Shutdown -s 到了22点电脑就会出现"系统关机"对话框,默认有30秒钟的倒计时并提示你保存工作 Shutdown.exe -s -t 3600 这里表示 ...

  4. JSP对象和JavaBean

    1. JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的,如下图所示: Http请求头对应的内容如下: 对应方 ...

  5. 500 Days Of Summer

    <和莎莫的500天>,一部爱情片. Summer和Tom两人不同的爱情观走在了一起,或许真的就是爱情观不同,或许是Summer爱Tom爱的不够深,最终的结局是那么不尽人意. 有人愿意把秘密 ...

  6. UVA Live Archive 4015 Cave (树形dp,分组背包)

    和Heroes Of Might And Magic 相似,题目的询问是dp的一个副产物. 距离是不好表示成状态的,但是可以换一个角度想,如果知道了从一个点向子树走k个结点的最短距离, 那么就可以回答 ...

  7. 2018.10.26 NOIP2018模拟赛 解题报告

    得分: \(0+10+10=20\)(\(T1\)死于假题面,\(T3\)死于细节... ...) \(P.S.\)由于原题是图片,所以我没有上传题目描述,只有数据. \(T1\):颜料大乱斗(点此看 ...

  8. RAID0 1 5 10原理、种类及性能优缺点对比

    一.RAID模式优缺点的简要介绍 目前被运用较多的RAID模式其优缺点大致是这样的: 1.RAID0模式 优点:在RAID 0状态下,存储数据被分割成两部分,分别存储在两块硬盘上,此时移动硬盘的理论存 ...

  9. 2018.5.22 Oracle安装配置在虚拟机中外部电脑连接服务

    1.拷贝老师的集成文件(win系统和oracle服务) 2.安装虚拟机,并且打开镜像文件 3.启动监听程序(实例服务[自动].监听服务) 4.查看虚拟机ip,此ip要主机ip在同一个网段 5.检查虚拟 ...

  10. Oracle 换行符 空格符 回车符

    ① 换行符 chr(10)② 回车符 chr(13) ③ 空格符 chr(9) 例1:效果对比.chr(10)在一个字段中换行显示一列数据,chr(13)同样是换行显示一行数据,chr(9)会显示一个 ...