HDUOJ------1058 Humble Numbers
Humble Numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14343 Accepted Submission(s): 6229
Problem Description
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
The input consists of one or more test cases. Each test case consists of one integer n with 1 <= n <= 5842. Input is terminated by a value of zero (0) for n.
Output
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.
思路,对于任意一个数n,都可以由 n=∏q^r即由素数之积构成....
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 /*策略打表实现存储*/
5 __int64 sav[10000];
6 int cmp(void const *a,void const *b)
7 {
8 return (*(__int64 *)a)-(*(__int64 *)b);
9 }
10 int work()
11 {
12 __int64 a,b,c,d,aa,bb,cc,dd;
13 int cnt=0;
14 for(a=0,aa=1; ;a++)
15 {
16 if(a!=0) aa*=7;
17 if(aa>2000000000) break;
18 for(b=0,bb=1; ; b++)
19 {
20 if(b!=0) bb*=5;
21 if((aa*bb)>2000000000) break;
22 for(c=0,cc=1; ; c++)
23 {
24 if(c!=0)cc*=3;
25 if((aa*bb*cc)>2000000000) break;
26 for(d=0,dd=1; ;d++)
27 {
28 if(d!=0) dd*=2;
29 if((aa*bb*cc*dd)>2000000000) break;
30 sav[cnt++]=(aa*bb*cc*dd);
31 }
32 }
33 }
34 }
35
36 return cnt;
37 }
38 int main()
39 {
40 int n;
41 qsort(sav,work(),sizeof(sav[0]),cmp);
42 while(scanf("%d",&n),n)
43 {
44 int tem=n%100;
45 printf("The ");
46 if(tem>10&&tem<20)
47 printf("%dth ",n);
48 else
49 {
50 tem%=10;
51 if(tem==1)
52 printf("%dst ",n);
53 else if(tem==2)
54 printf("%dnd ",n);
55 else if(tem==3)
56 printf("%drd ",n);
57 else
58 printf("%dth ",n);
59 }
60 printf("humble number is %I64d.n",sav[n-1]);
61 }
62 return 0;
63 }
- RavenDb学习(七) 异步工作以及维度查询
- RavenDb学习(五)结果转换
- sqoop 从sqlserver2008 导入数据到hadoop
- 从头编写 asp.net core 2.0 web api 基础框架 (2)
- hbase源码系列(四)数据模型-表定义和列族定义的具体含义
- RavenDb学习(四)处理文档相关性
- RavenDb学习(二)简单的增删查改
- RavenDb学习(九)高级特性下半部分
- RavenDb学习(三)静态索引
- 从头编写 asp.net core 2.0 web api 基础框架 (1)
- 使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端
- 如何实现超高并发的无锁缓存?
- 使用Identity Server 4建立Authorization Server (5)
- 多库多事务降低数据不一致概率
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 知识图谱入门(三)
- xmuC语言程序实践week 2 大作业
- redis学习(二十三)
- Vue 轻量级后台管理系统基础模板
- R语言对混合分布中的不可观测与可观测异质性因子分析
- JavaScript同步、异步及事件循环
- Node.js开发人员都应该知道的12个有用的包
- 欧拉函数的几条重要性质
- 迷宫问题的简单栈实现
- xmuC语言程序实践week 3 大作业
- xmuC语言程序实践week 4 大作业
- R语言预测人口死亡率:用李·卡特(Lee-Carter)模型、非线性模型进行平滑估计
- 前端的发展历程
- R语言蒙特卡洛计算和快速傅立叶变换计算矩生成函数
- Visual Studio 中万能头文件编译不了的解决方案