Poj 2247 Humble Numbers(求只能被2,3,5, 7 整除的数)
一、题目大意
本题要求写出前5482个仅能被2,3,5, 7 整除的数。
二、题解
这道题从本质上和Poj 1338 Ugly Numbers(数学推导)是一样的原理,只需要在原来的基础上加上7的运算即可。还有一个不同之处在于输出上,这个题要求第n的英语表示。而英语中的表示呢,如果n的个位数是1,用nst表示个位数是2的用,nnd表示;个位数是3的,用nrd表示。但是n的最后两位是11、12、13的还是用nth表示,其他的也是用th表示。
三、java代码
import java.util.Scanner;
public class Main {
public static String format(int n){
if(n % 10==1 && n% 100 !=11)
return n+"st";
if(n % 10==2 && n% 100 !=12)
return n+"nd";
if(n % 10==3 && n% 100 !=13)
return n+"rd";
return n+"th";
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n;
int i2_mul;
int i3_mul;
int i5_mul;
int i7_mul;
long[] ugly=new long[5843];
i2_mul = 1;
i3_mul = 1;
i5_mul = 1;
i7_mul = 1;
ugly[1]=1;
for( int i = 2; i <= 5842; i++ ){
ugly[i] = Math.min(Math.min(ugly[i2_mul]*2,
Math.min(ugly[i3_mul]*3,ugly[i5_mul]*5)), ugly[i7_mul]*7);
if(ugly[i] == ugly[i2_mul]*2 )
i2_mul++;
if(ugly[i] == ugly[i3_mul]*3 )
i3_mul++;
if(ugly[i] == ugly[i5_mul]*5)
i5_mul++;
if(ugly[i] == ugly[i7_mul]*7)
i7_mul++;
}
while((n=sc.nextInt())!=0){
System.out.println("The "+format(n)+" humble number is "+ugly[n]+".");
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Poj 2247 Humble Numbers(求只能被2,3,5, 7 整除的数)的更多相关文章
- POJ 2247 Humble Numbers
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- HDU-1492-The number of divisors(约数) about Humble Numbers -求因子总数+唯一分解定理的变形
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- DP 60题 -3 HDU1058 Humble Numbers DP求状态数的老祖宗题目
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 递推(三):POJ中的三道递推例题POJ 1664、POJ 2247和POJ 1338
[例9]放苹果(POJ 1664) Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. In ...
- A - Humble Numbers
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pract ...
- 洛谷P2723 丑数 Humble Numbers
P2723 丑数 Humble Numbers 52通过 138提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目背景 对于一给定的素数 ...
- HDU1492/The number of divisors(约数) about Humble Numbers
题目连接 The number of divisors(约数) about Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- Humble Numbers(丑数) 超详解!
给定一个素数集合 S = { p[1],p[2],...,p[k] },大于 1 且素因子都属于 S 的数我们成为丑数(Humble Numbers or Ugly Numbers),记第 n 大的丑 ...
- USACO Humble Numbers
USACO Humble Numbers 这题主要是两种做法,第一种是比较常(jian)规(dan)的-------------用pq(priority_queue)维护,每次取堆中最小值(小根堆) ...
随机推荐
- 九度OJ 1344:可乐瓶展览 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:430 解决:76 题目描述: 众所周知JOBDU旗下的JOBCOLA公司是文明全球的著名可乐制造商,与其它可乐公司不同的是,JOBCOLA可 ...
- 九度OJ 1203:IP地址 (字符串处理)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3038 解决:1496 题目描述: 输入一个ip地址串,判断是否合法. 输入: 输入的第一行包括一个整数n(1<=n<=500) ...
- 页游手游服务器(五)sql缓存层
sql的通用缓存,是实现最麻烦的一部分,对于查询结果的缓存,主要有如下的结构来缓存: cache tablename--player statement--select * from player w ...
- 2014阿里实习生面试题——MySQL如何实现索引的
这是2014阿里实习生北京站二面的一道试题: 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,比如MyISAM和InnoDB存储引擎. MyISAM索引实现: MyI ...
- awk 字符串函数
awk 提供了许多强大的字符串函数,见下表: awk 内置字符串函数 gsub(r,s) 在整个 $0 中用 s 替代 r gsub(r,s,t) 在整个 t 中用 s 替代 r index(s,t) ...
- 数据库抽象层PDO
通过数据库抽象层PDO可以访问多个数据库 //数据库抽象层PDO //造DSN:驱动名:dbname=数据库名:host=服务器地址 $dsn = "mysql:dbname=mydb;ho ...
- vi使用方法详细介绍
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- 第五篇、javascript正则表达式二
一.内容概要 1)创建着呢规则表达式对象的两种方法 2)正则表达式的常用属性和方法 3)string对象常用方法中可以使用正则表达式 4)ES中其他预定义的对象:Math.Date.Number.Bo ...
- 算法(Algorithms)第4版 练习 1.3.1
package com.qiusongde; import java.util.Iterator; import java.util.NoSuchElementException; import ed ...
- 分享知识-快乐自己:mongodb 安装部署(linux)
1):下载 mongodb 包 [root@admin tools]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6. ...