A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.

Write a program to find and print the nth element in this sequence.

Input Specification

The input consists of one or more test cases. Each test case consists of one integer n with  . Input is terminated by a value of zero (0) for n.

Output Specification

For each test case, print one line saying "The nth humble number is number.". Depending on the value of n, the correct suffix "st", "nd", "rd", or "th" for the ordinal number nth has to be used like it is shown in the sample output.

Sample Input

1
2
3
4
11
12
13
21
22
23
100
1000
5842
0

Sample Output

The 1st humble number is 1.
The 2nd humble number is 2.
The 3rd humble number is 3.
The 4th humble number is 4.
The 11th humble number is 12.
The 12th humble number is 14.
The 13th humble number is 15.
The 21st humble number is 28.
The 22nd humble number is 30.
The 23rd humble number is 32.
The 100th humble number is 450.
The 1000th humble number is 385875.
The 5842nd humble number is 2000000000. 思路:本题要求第i小的质因子只有2,3,5,7的数,一个一个与质数相关的题目显然会超时,所以遇到这种问题一般会提前先进行预处理,之后查询。由于题目中说明n<=5842,最大的值为2*10^9所以可以断定本题使用枚举法将结果存在一个整形数组里即可。之后就是需要考虑枚举范围,2*10^9的是2^31,3^20,5^14,7^12以内,所以2、3、5、7的枚举范围分别为31,20,14,12即可。

在这里还有注意输出格式的问题,对于序数词:

1)若n%10=1,2,3并且n%100!=11,12,13,则末尾为st,nd,rd;

2)否则末尾为th;

AC代码:

#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#define MAX 2000000000
using namespace std; int hum[]; void getHum()
{
int a,b,c,d;
int len=;
long long num2,num3,num5,num7;
for(a=;a<=;a++)
{
num2=(long long)pow(2.0,(double)a);
for(b=;b<=;b++)
{
num3=(long long)pow(3.0,(double)b);
if(num2*num3>MAX)
break;
for(c=;c<=;c++)
{
num5=(long long)pow(5.0,(double)c);
if(num2*num3*num5>MAX)
break;
for(d=;d<=;d++)
{
num7=(long long)pow(7.0,(double)d);
if(num2*num3*num5*num7<=MAX)
hum[len++]=num2*num3*num5*num7;
else break;
}
}
}
}
sort(hum,hum+len);
} int main(void)
{
int n;
getHum();
while(scanf("%d",&n)==&&n!=)
{
if(n%==&&n%!=)
printf("The %dst humble number is %d.\n",n,hum[n-]);
else if(n%==&&n%!=)
printf("The %dnd humble number is %d.\n",n,hum[n-]);
else if(n%==&&n%!=)
printf("The %drd humble number is %d.\n",n,hum[n-]);
else
printf("The %dth humble number is %d.\n",n,hum[n-]);
}
return ;
}

参考博客:http://www.cnblogs.com/dolphin0520/archive/2011/04/15/2016774.html

SOJ1029 Humble Numbers (枚举)的更多相关文章

  1. 洛谷P2723 丑数 Humble Numbers

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

  2. Humble Numbers(丑数) 超详解!

    给定一个素数集合 S = { p[1],p[2],...,p[k] },大于 1 且素因子都属于 S 的数我们成为丑数(Humble Numbers or Ugly Numbers),记第 n 大的丑 ...

  3. USACO Humble Numbers

    USACO  Humble Numbers 这题主要是两种做法,第一种是比较常(jian)规(dan)的-------------用pq(priority_queue)维护,每次取堆中最小值(小根堆) ...

  4. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  5. HDU - The number of divisors(约数) about Humble Numbers

    Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence ...

  6. A - Humble Numbers

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  7. The number of divisors(约数) about Humble Numbers[HDU1492]

    The number of divisors(约数) about Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Lim ...

  8. Humble Numbers

    Humble Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9988 Accepted: 4665 Descri ...

  9. HDU 1058 Humble Numbers (DP)

    Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

随机推荐

  1. Windows加密API的功能分类

    本地数据加密保护本地数据加密保护机制提供了简单的DAPI调用接口,密钥管理等等一概由系统来处理.DAPI的数据加密保护机制在用户登录会话范围或者本地计算范围,使用操作系统设计的方式加密保护数据和解密还 ...

  2. 基于resteasy,Base64码上传文件

    package com.xgt.controller.bs; import com.xgt.bean.bs.VersionBean; import com.xgt.common.BaseControl ...

  3. Scrum 冲刺博客第一篇

    一.各个成员在 Alpha 阶段认领的任务 成员 Alpha 阶段认领的任务 黄腾龙 主要功能模块代码开发 叶城龙 部分模块代码开发,博客撰写 李心宇 代码测试,博客撰写 余腾鑫 界面设计,博客撰写 ...

  4. Full postback triggered by LinkButton inside GridView inside UpdatePanel

    GridView inside of a UpdatePanel,get the button to trigger a partial postback <asp:ScriptManager ...

  5. golang学习之struct

    结构体定义的一般方式如下: type identifier struct { field1 type1 field2 type2 ... } type T struct {a, b int} 也是合法 ...

  6. golang学习之文件上传

    首先是上传页面upload.html: <!doctype html> <html> <head> <meta charset="utf-8&quo ...

  7. node版本管理nvm使用

    nvm:Node Version Manager,用来管理node版本,可以在一台机器上来回切换node版本,比较方便. win下建议使用 nvm-windows nodist linux下直接使用n ...

  8. Java String、string[]、List初始化方法

    String初始化: 1.String str = new String("string1"); 2.String str = "string1"; Strin ...

  9. PAT 1034. Head of a Gang[bug]

    有一个两分的case出现段错误,真是没救了,估计是要写bfs的形式,可能栈溢出了 #include <cstdio> #include <cstdlib> #include & ...

  10. PHP打印日期

    <?php header("content-type:text/html;charset=utf-8"); echo "今天是 " . date(&quo ...