UVA - 136 Ugly Numbers (有关set使用的一道题)
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使用的一道题)的更多相关文章
- UVA.136 Ugly Numbers (优先队列)
UVA.136 Ugly Numbers (优先队列) 题意分析 如果一个数字是2,3,5的倍数,那么他就叫做丑数,规定1也是丑数,现在求解第1500个丑数是多少. 既然某数字2,3,5倍均是丑数,且 ...
- 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 ...
- UVa 136 Ugly Numbers【优先队列】
题意:给出丑数的定义,不能被除2,3,5以外的素数整除的的数称为丑数. 和杭电的那一题丑数一样--这里学的紫书上的用优先队列来做. 用已知的丑数去生成新的丑数,利用优先队列的能够每次取出当前最小的丑数 ...
- UVa 136 - Ugly Numbers
题目大意:只有素因子2,3,5的数叫做丑数.输出第1500个丑数即可. 这个...好吧,直接输出就是了.自己写一个小程序先计算一下,这就是黑盒测试的好处啊,“我们的目标是解决问题,而不是为了写程序而写 ...
- 136 - Ugly Numbers
Ugly Numbers Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3 ...
- 136 Ugly Numbers(priority_queue+逆向求解要求数)
题目链接: https://cn.vjudge.net/problem/UVA-136 /*问题 输出第1500个丑数,丑数的定义是不能被2,3,5以外的其他素数整除的数 解题思路 直接硬暴力先试一下 ...
- 丑数(Ugly Numbers, UVa 136)
丑数(Ugly Numbers, UVa 136) 题目描述 我们把只包含因子2.3和5的数称作丑数(Ugly Number).求按从小到大的顺序的第1500个丑数.例如6.8都是丑数,但14不是,因 ...
- 【UVA - 136】Ugly Numbers(set)
Ugly Numbers Descriptions: Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequ ...
- Ugly Numbers UVA - 136(优先队列+vector)
Problem Description Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, ...
随机推荐
- SQL数据库游标
这个文档几乎包含了oracle游标使用的方方面面,全部通过了测试 -- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标--(1)定义游标- ...
- Mysql处理海量数据时的一些优化查询速度方法(转)
最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果whe ...
- JavaScript——Dom编程(1)
DOM:Document Object Model(文本对象模型) D:文档 – html 文档 或 xml 文档O:对象 – document 对象的属性和方法M:模型 DOM 是针对xml(htm ...
- 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页
通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...
- 原生ajax访问服务器所展现的现象
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>ajax ...
- LightOJ 1284 Lights inside 3D Grid (数学期望)
题意:在一个三维的空间,每个点都有一盏灯,开始全是关的.现在每次随机选两个点,把两个点之间的全部点,开关都按一遍,问k次过后开着的灯的期望数量: 析:很容易知道,如果一盏灯被按了奇数次,那么它肯定是开 ...
- sql多表链接之三表连接查询
表与表之间的关系如下 查询条件:根据员工表的enployee_id 查找他在哪个部门,他在哪个城市工作. 查询语句:
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(3):常用动态代理之JDK动态代理、CGLIB动态代理
一.动态代理的理解 动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问. 先来谈谈什么是代理模式. 假设这样一个场景:你的公司是一家软件 ...
- 编写高质量代码改善C#程序的157个建议——建议10: 创建对象时需要考虑是否实现比较器
建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样.举个最简单的例子,在UI中,有一个10个人的Salary列表.根据排序的需要,列表要支持针对基本工资来 ...
- C语言/C++编程学习三种循环用法和区别
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...