剑指Offer - 九度1214 - 丑数
2013-11-21 21:06
题目描述:

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

输入:

输入包括一个整数N(1<=N<=1500)。

输出:

可能有多组测试数据,对于每组数据,
输出第N个丑数。

样例输入:
3
样例输出:
3
题意分析:
  题目要求按照从小到大的顺序找出因子只有2, 3, 5的第N个数。
  由于所有数列中的f(n)都可表示为f(n) = 2 ^ x * 3 ^ y * 5 * z;那么求f(n)必然来自下面三种情况之一:
    f(n) = f(a) * 2;
    f(n) = f(b) * 3;
    f(n) = f(c) * 3;
  由于数列从小到大排列,f(n)应该取上述三个结果中最小的一个,去了以后,对应的iterator也应该前移一位。于是有了如下代码。
  递推时间复杂度O(n),数组空间复杂度O(n)。
  ZOJ 1095 -Humble Number和这题完全一个道理。
 // 652664    zhuli19901106    1214    Accepted    点击此处查看所有case的执行结果    1020KB    737B    10MS
//
#include <cstdio>
using namespace std; const int &mymin(const int &x, const int &y)
{
return (x < y ? x : y);
} int main()
{
const int MAXN = ;
int a[MAXN + ];
int p2, p3, p5;
int r2, r3, r5;
int minv;
int i; a[] = ;
a[] = ;
p2 = p3 = p5 = ;
for(i = ; i <= MAXN; ++i){
r2 = a[p2] * ;
r3 = a[p3] * ;
r5 = a[p5] * ;
minv = mymin(mymin(r2, r3), r5);
a[i] = minv;
if(minv == r2){
++p2;
}
if(minv == r3){
++p3;
}
if(minv == r5){
++p5;
}
} while(scanf("%d", &i) == ){
if(i >= && i <= MAXN){
printf("%d\n", a[i]);
}
} return ;
}

剑指Offer - 九度1214 - 丑数的更多相关文章

  1. 剑指Offer - 九度1504 - 把数组排成最小的数

    剑指Offer - 九度1504 - 把数组排成最小的数2014-02-06 00:19 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输 ...

  2. 剑指Offer - 九度1360 - 乐透之猜数游戏

    剑指Offer - 九度1360 - 乐透之猜数游戏2014-02-05 19:54 题目描述: 六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工.为了增添一点趣味性,他还准备 ...

  3. 剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)

    剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)2014-02-05 19:37 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.H ...

  4. 剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)

    剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)2014-02-05 23:03 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直 ...

  5. 剑指Offer - 九度1355 - 扑克牌顺子

    剑指Offer - 九度1355 - 扑克牌顺子2014-01-30 23:19 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^). ...

  6. 剑指Offer - 九度1352 - 和为S的两个数字

    剑指Offer - 九度1352 - 和为S的两个数字2014-02-05 18:15 题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于 ...

  7. 剑指Offer - 九度1522 - 包含min函数的栈

    剑指Offer - 九度1522 - 包含min函数的栈2013-12-01 23:44 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测 ...

  8. 剑指Offer - 九度1520 - 树的子结构

    剑指Offer - 九度1520 - 树的子结构2013-11-30 22:17 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每 ...

  9. 剑指Offer - 九度1513 - 二进制中1的个数

    剑指Offer - 九度1513 - 二进制中1的个数2013-11-29 23:35 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例. ...

随机推荐

  1. 洛谷 P1509 找啊找啊找GF

    题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sqybi这 ...

  2. 关于vim、nvim的折腾

    1 from a view of enc ·nvim必须set enc=utf8,很多基于python的插件也默认了此,这对于中文这些并不友好,然而,vim支持多字节就好的多. 因为很多项目,大家可能 ...

  3. Uva 10791 最小公倍数的最小和 唯一分解定理

    题目链接:https://vjudge.net/contest/156903#problem/C 题意:给一个数 n ,求至少 2个正整数,使得他们的最小公倍数为 n ,而且这些数之和最小. 分析: ...

  4. 【[USACO17DEC]Standing Out from the Herd】

    题目 不会广义\(SAM\)啊 但信仰插入特殊字符就可以搞定一切了 我们先把所有的串搞在一起建出一个\(SAM\),记得在中间插入特殊字符 对于\(parent\)树上的一个节点,只有当其\(endp ...

  5. (转)Fidder详解之get和post请求

    https://www.cnblogs.com/langhuagungun/p/7737204.html 前言 本文会对Fidder这款工具的一些重要功 能,进行详细讲解,带大家进入Fidder的世界 ...

  6. [Pytorch] pytorch笔记 <二>

    pytorch笔记2 用到的关于plt的总结 plt.scatter scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, ...

  7. MCV 的几种表单提交方式

    一,MVC  HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){}   其中actionName ...

  8. 【Java】对象、类(抽象类与内部类)、接口

    博文内容概况 对象和类 抽象类 接口 内部类 对象和类 对象是对客观事物的抽象,类是对对象的抽象.类是一种数据类型,其外观和行为由用户定义.类中可以设置两种类型的元素:字段(有时被称为数据成员)和方法 ...

  9. BZOJ1061: [Noi2008]志愿者招募(线性规划)

    Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 5725  Solved: 3437[Submit][Status][Discuss] Descript ...

  10. 返回用户指定页面的web服务器

    import socket import re import os def handle_client(socket_con): """ 接收来自客户端的请求,并接收请求 ...