题意:丑数就是质因子只有2,3,5 ,7,的数,另外1也是丑数。求第n(1=<n<=5842)个丑数,n=0,结束。

思路:根据丑数的定义,丑数应该是另一个丑数乘以2、3、5或者7的结果(1除外)。那么,现在最主要的问题是如何排序,而且使得求得数不重复。

<阶梯式上升>:从ans[1]=1,p1=1,p2=1,p3=1,p4=1,分别用2,3,5,7乘ans[px],得到一个v(min),这个v就是下一个ans,

同时,对应的px++;

技巧:因为题目中是多组输入,所以没必要没输入一个数就把程序跑一遍,而且n有上限,索性用类似于打表的方式把n<=上限的结果计算出来,每次直接输出就可以了,节省时间。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll ans[6000];
void fuck()
{
ans[1]=1;int p2 = 1, p3 = 1, p5 = 1, p7 = 1;int cnt = 1;//阶梯式上升
while (cnt<=5842)
{
ll v = min(min(ans[p2] * 2, ans[p3] * 3),min( ans[p5] * 5, ans[p7] * 7));
if (v == ans[p2] * 2) ++p2;
if (v == ans[p3] * 3) ++p3;
if (v == ans[p5] * 5) ++p5;
if (v == ans[p7] * 7) ++p7;
ans[++cnt] = v;
}
}
int main ()
{
int n;
fuck();
while(~scanf("%d",&n)&&n)
{
printf("%lld\n",ans[n]);
}
return 0;
}

丑数<数学技巧>的更多相关文章

  1. 剑指Offer——丑数

    剑指Offer--丑数 前言     参照<剑指Offer>,通过洞悉其思想并消化吸收,改为java实现,供自己以后巩固. package cn.edu.ujn.offersword; i ...

  2. 剑指Offer丑数问题

    这是剑指第一次卡死我的题……记录一下 首先看题目: 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数 ...

  3. 剑指offer 丑数

    思路:可以发现,每个丑数都是由以前的丑数得到.当前丑数一定是之前丑数能够得到的最小丑数. AC代码 class Solution { public: int GetUglyNumber_Solutio ...

  4. 用js刷剑指offer(丑数)

    题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 思路 ...

  5. 剑指offer——丑数(c++)

    题目描述只包含质因子2.3和5的数称作丑数(UglyNumber).例如6.8都是丑数,但14不是,因为它包含质因子7,习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 思路:1.逐个 ...

  6. 剑指offer--33.丑数

    本来用数组做标志位,但是测试数据有第1500个,859963392,惹不起哦 ------------------------------------------------------------- ...

  7. 剑指Offer-32.丑数(C++/Java)

    题目: 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 分析: ...

  8. 剑指Offer32 丑数

    /************************************************************************* > File Name: 32_UglyNu ...

  9. 干货 | 剑指offer系列文章汇总

    下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现  剑指offer系列  始 剑指offer—灯管问题(1)  剑指offer—10人电梯(2)  ...

  10. 【剑指offer】丑数

    把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. leetcode上也 ...

随机推荐

  1. android命令行网络时间同步

    一.简介 Android基于Linux平台的开源手机操作系统. 二.原理 既然是Linux,那就应该支持linux的各种命令行,高度的可配置,但实验发现Android是Google的一个高度阉割版的l ...

  2. js键盘键值大全

    原文地址:http://blog.csdn.net/avenccssddnn/article/details/7950524 js键盘键值 keycode 8 = BackSpace BackSpac ...

  3. lldpcli 常用命令

    1.查看周围的邻居列表 root@hbg:/# lldpcli show neighbors------------------------------------------------------ ...

  4. HDU2502:月之数

    Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数. 如果一个正整数m表示成二进制,它的位数为n(不 ...

  5. Python之路:爬虫之urllib库的基本使用和高级使用

    关于爬虫自己一直在看,所以时间太慢,这才第二更,有等不及的小伙伴可以慢慢的品尝了,在看下面的之前,建议先把上一章看一下.以下是关于python的Urllib的基础和高级用法. 1.如何扒下一个网站,用 ...

  6. MySQL 视图 总结

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...

  7. perl的Getopt::Long和pod::usage ?

    来源: http://www.cnblogs.com/itech/archive/2012/08/07/2627267.html 代码: 需要显式地定义变量且初始化.例如optionX. 如果没有定义 ...

  8. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...

  9. jQuery实现父窗口的问题

    因为先前遇到的问题,所以我考虑采用 IFRAME 来隔离不同的脚本,从而实现我需要的效果. 在框架中,我用 JavaScript 获取 JSON 数据,组织成 HTML 代码,最后将其填充至上层文档的 ...

  10. iOS 开发中的各种证书

    公钥和私钥 转载自:http://www.samirchen.com/ios-certificates/ 先简单的介绍一下公钥和私钥.我们常见的加密算法有两类:对称加密算法(Symmetric Cry ...