Ugly numbers are numbers whose only prime factors are 2, 3 or 5.

The sequence1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...

shows the first 11 ugly numbers.

By convention, 1 is included.Write a program to find and print the 1500’th ugly number.

Input

There is no input to this program.

Output

Output should consist of a single line as shown below, with ‘’ replaced by the numbercomputed.

Sample OutputThe 1500'th ugly number is .

把只包含因子2、3和5的数称作ugly numbers

例如6、8都是丑数,但20不是,因为它包含因子4。

本题要求输出第1500个丑数,用set直接判重输出

WA了一次发现UVA不支持#include<buts/stdc++.h>…………

set的用法:set<类型>名字;

例如set<int>se;set<string>se;

自己定义的结构体什么的也可以往里面塞

基本操作对集合a中元素的有

插入元素:a.insert(1);

删除元素(如果存在):a.erase(1);

判断元素是否属于集合:if(a.find(1)!=a.end())

返回集合元素的个数:a.size()

将集合清为空集 :a.clear ()

set可以解决去重和排序问题。

set中每个元素最多只出现一次

set中的元素已经从小到大排序好

如何通过迭代器从小到大遍历所有元素 

for (set<string>::iterator i = d.begin(); i != d.end(); i++)  

cout << *i << endl;

#include <cstdio>
#include <set>
#include <algorithm>
using namespace std; set<long long>a;
int ref[3]={2,3,5};
int main()
{
int m=1;
a.insert(1);//默认1位第一个丑数
set<long long>::iterator it=a.begin();
//set<long long>::iterator it;一样的
//迭代器对象代表容器中的确定的地址 ,理解成将a这个容器的首地址给了it
while(m<=1600)
{
it=a.begin();
for(it;it!=a.end()&&m<=1600;it++)//从小到大遍历元素,中间多了一个判断m数值的条件
{
for(int j=0;j<3;j++)
{
long long tmp=(*it)*ref[j];//使值对应乘一遍2、3、5
if(a.find(tmp)==a.end())//find()--返回一个指向被查找到元素的迭代器,此处为判断整个set数组中是否有tmp
{
a.insert(tmp);//如果没有就添加tmp
m++;//丑数+1
}
}
}
}
m=1;
it=a.begin();
for(it;it!=a.end()&&m++<1500;it++);//从小到大遍历set数组,注意此处的;
//一直到m=1499的时候,数组才停止,此时it++,正好对应了第1500个
printf("The 1500'th ugly number is %lld.\n",*it);//nice,完美,没毛病
return 0;
}

UVA - 136 Ugly Numbers (有关set使用的一道题)的更多相关文章

  1. UVA.136 Ugly Numbers (优先队列)

    UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...

  2. UVA - 136 Ugly Numbers(丑数,STL优先队列+set)

    Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9 ...

  3. UVa 136 Ugly Numbers【优先队列】

    题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数. 和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做. 用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数 ...

  4. UVa 136 - Ugly Numbers

    题目大意:只有素因子2,3,5的数叫做丑数.输出第1500个丑数即可. 这个...好吧,直接输出就是了.自己写一个小程序先计算一下,这就是黑盒测试的好处啊,“我们的目标是解决问题,而不是为了写程序而写 ...

  5. 136 - Ugly Numbers

     Ugly Numbers  Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3 ...

  6. 136 Ugly Numbers(priority_queue+逆向求解要求数)

    题目链接: https://cn.vjudge.net/problem/UVA-136 /*问题 输出第1500个丑数,丑数的定义是不能被2,3,5以外的其他素数整除的数 解题思路 直接硬暴力先试一下 ...

  7. 丑数(Ugly Numbers, UVa 136)

    丑数(Ugly Numbers, UVa 136) 题目描述 我们把只包含因子2.3和5的数称作丑数(Ugly Number).求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因 ...

  8. 【UVA - 136】Ugly Numbers(set)

    Ugly Numbers Descriptions: Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequ ...

  9. Ugly Numbers UVA - 136(优先队列+vector)

    Problem Description Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, ...

随机推荐

  1. 各种RNAseq原理

    RNA Sequencing Methods Low-Level RNA Detection CEL-Seq CirSeq CLaP CytoSeq Digital RNA Sequencing DP ...

  2. C# Code 非常好的学习博客

    https://ardalis.com/how-to-become-master-writing-c-code

  3. 10.Python之Ansible自动化运维常用模块

    Ansible中文权威文档:http://www.ansible.com.cn/docs/ Ansible从入门到精通:https://www.bilibili.com/video/av3361175 ...

  4. jquery表单数据验证扩展方法

    /** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...

  5. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(7):装配SpringBean·依赖注入装配

    一.依赖注入的三种方式      在实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来.另一类则是依赖注入.一般而言,依赖注入可分为3中方式: ...

  6. 状态压缩DP----HDU2809

    状态压缩DP的一道较不错的入门题,第二次做这类问题,感觉不是很顺手,故记录下来. 题目的意思就是吕布战群雄,先给你6个数,分别是吕布的攻击值,防御值,生命值,升级后此三值各自的增量,然后是对手的个数n ...

  7. 并发编程学习笔记之Java存储模型(十三)

    概述 Java存储模型(JMM),安全发布.规约,同步策略等等的安全性得益于JMM,在你理解了为什么这些机制会如此工作后,可以更容易有效地使用它们. 1. 什么是存储模型,要它何用. 如果缺少同步,就 ...

  8. Oracle 触发器 删除操作时再查询本表数据 功能不正确

    背影如下: 表名,WFGTEST create table WFGTEST ( NAME1 ) not null, NAME2 ), CAPACITY ,) ) 表结构如下: NAME1 NAME2 ...

  9. 常用SQL性能统计代码

    1 BEGIN DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=> 'TELEDB', TABNAME=> 'WFGTEST', PARTNAME=> N ...

  10. MooseFS分布式文件系统介绍

    一.简介 MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本.对于访问的客户端或者用户来说,整个分布式网络文件系统 ...