时间限制: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
****************************************************************/

最新文章

  1. Android开发之基于AndroidStudio环境搭建和工程创建
  2. 数据结构快速回顾——平衡二叉树 AVL (转)
  3. getContentResolver()内容解析者查询联系人、插入联系人
  4. mysql 日期类型比较
  5. SNMP-配置文件详解
  6. sqlserver同步后在不重新初始化快照的情况下新增表
  7. Spring3 url匹配规则
  8. 招聘一个靠谱的ios
  9. ListCell Animation in ListView
  10. 李洪强iOS开发之OC语言类的深入和分类
  11. Delphi 文字跑马灯
  12. 7 Hbase put方式插入数据
  13. poj1565---(数论)skew binary
  14. NSNotificationCenter消息通信机制
  15. 我的three.js学习记录(一)
  16. Libgdx1.6.2发布,跨平台游戏开发框架
  17. 不同场景下使用CSS隐藏元素
  18. 【解决】Server Tomcat v7.0 Server at localhost failed to start.
  19. ubuntu16中部署web项目到tomcat,xft和securecrt连接到ubuntu16(待续。。。)
  20. shiro:hasPermission 标签 :验证当前用户是否拥有指定权限

热门文章

  1. Hadoop 变更磁盘的方法总结
  2. CentOS 7.2通过yum安装zabbix
  3. 转:如何查看MyEclipse包含的Eclipse的版本号
  4. Angular 学习笔记——自定义指令
  5. iOS 设置导航栏 返回按钮文字隐藏
  6. &lt;p&gt;在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性。由于编程实际上是和机器打交道,而和机器打交道,仅仅要你符合机器预定的逻辑,&lt;/p&gt;
  7. jm解决乱码问题-参数化-数据库操作-文件上传下载
  8. cdn日志统一下载程序
  9. MySQL一:初识数据库
  10. Java利用Axis远程调用WebService接口