UVA136 Ugly Numbers

来源:互联网 发布:网上数据库参考文献 编辑:程序博客网 时间:2024/06/04 18:39

问题链接:UVA136 Ugly Numbers。基础级练习题,用C++语言编写程序。

题意简述:不能被2、3和5以外的素数整除的数称为丑数,找出第1500个丑数。

问题分析:换句话说,丑数的因子只能是2、3和5。1是丑数,对于x,若x是丑数则2x、3x和5x是丑数。利用已知的丑数,从小到不断生成丑数就可以了。

程序说明:使用一个STL的容器set来存放丑数。集合具有去重复,自动排序的功能,十分方便。

AC的C++语言程序如下:

/* UVA136 Ugly Numbers */#include <iostream>#include <cstdio>#include <set>using namespace std;#define MAXN 1500typedef unsigned long long ULL;set<ULL> ugly;int main(void){    int count;    ugly.insert(1);    count = 0;    set<ULL>::iterator iter = ugly.begin();    while(++count < MAXN) {        ULL t = *iter;        ugly.insert(t * 2);        ugly.insert(t * 3);        ugly.insert(t * 5);        iter++;    }    printf("The 1500'th ugly number is %llu.\n", *iter);    return 0;}


1 0