九度OJ 1214:丑数 (整除)
2024-08-24 13:47:28
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2180
解决:942
- 题目描述:
-
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。
习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
- 输入:
-
输入包括一个整数N(1<=N<=1500)。
- 输出:
-
可能有多组测试数据,对于每组数据,
输出第N个丑数。
- 样例输入:
-
3
- 样例输出:
-
3
思路:
常规思路,反复消因子2 3 5,如果最后剩下1,就是丑数,但最后发现超时了。见代码2。
优化的思路跟素数筛法有点类似,参考的别人的代码写的,很巧,学习了!见代码1。
代码1:
#include <stdio.h>
#include <stdlib.h> int min(int a, int b, int c)
{
int r;
r = a<b ? a : b;
r = r<c ? r : c;
return r;
} int main()
{
int n, count;
while(scanf("%d", &n) != EOF)
{
int *nums = (int *)malloc(n*sizeof(int));
nums[0] = 1;
count=1;
int *p2 = nums;
int *p3 = nums;
int *p5 = nums;
while (count < n)
{
nums[count] = min(*p2*2, *p3*3, *p5*5);
while (nums[count] >= *p2*2)
p2++;
while (nums[count] >= *p3*3)
p3++;
while (nums[count] >= *p5*5)
p5++;
count ++;
} printf("%d\n", nums[count-1]);
free(nums);
}
return 0;
}
/**************************************************************
Problem: 1214
User: liangrx06
Language: C
Result: Accepted
Time:20 ms
Memory:912 kb
****************************************************************/
代码2(原来的超时代码):
#include <stdio.h> int main()
{
int n, m, tmp, count;
while(scanf("%d", &n) != EOF)
{
count=1;
m=1;
while (count != n)
{
m++;
tmp = m;
while (tmp % 2 == 0)
tmp /= 2;
while (tmp % 3 == 0)
tmp /= 3;
while (tmp % 5 == 0)
tmp /= 5;
if (tmp == 1)
count ++;
} printf("%d\n", m);
}
return 0;
}
/**************************************************************
Problem: 1214
User: liangrx06
Language: C
Result: Time Limit Exceed
****************************************************************/
最新文章
- Android开发之基于AndroidStudio环境搭建和工程创建
- 数据结构快速回顾——平衡二叉树 AVL (转)
- getContentResolver()内容解析者查询联系人、插入联系人
- mysql 日期类型比较
- SNMP-配置文件详解
- sqlserver同步后在不重新初始化快照的情况下新增表
- Spring3 url匹配规则
- 招聘一个靠谱的ios
- ListCell Animation in ListView
- 李洪强iOS开发之OC语言类的深入和分类
- Delphi 文字跑马灯
- 7 Hbase put方式插入数据
- poj1565---(数论)skew binary
- NSNotificationCenter消息通信机制
- 我的three.js学习记录(一)
- Libgdx1.6.2发布,跨平台游戏开发框架
- 不同场景下使用CSS隐藏元素
- 【解决】Server Tomcat v7.0 Server at localhost failed to start.
- ubuntu16中部署web项目到tomcat,xft和securecrt连接到ubuntu16(待续。。。)
- shiro:hasPermission 标签 :验证当前用户是否拥有指定权限
热门文章
- Hadoop 变更磁盘的方法总结
- CentOS 7.2通过yum安装zabbix
- 转:如何查看MyEclipse包含的Eclipse的版本号
- Angular 学习笔记——自定义指令
- iOS 设置导航栏 返回按钮文字隐藏
- <;p>;在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性。由于编程实际上是和机器打交道,而和机器打交道,仅仅要你符合机器预定的逻辑,<;/p>;
- jm解决乱码问题-参数化-数据库操作-文件上传下载
- cdn日志统一下载程序
- MySQL一:初识数据库
- Java利用Axis远程调用WebService接口