题意翻译

题意描述:丑数是一些因子只有2,3,5的数。数列1,2,3,4,5,6,8,9,10,12,15……写出了从小到大的前11个丑数,1属于丑数。现在请你编写程序,找出第1500个丑数是什么。

没有输入

输出:The 1500'th ugly number is <...>.(<...>为你找到的第1500个丑数) 注意:<...>是你找到的数,输出中没有尖括号; 2、输出完应换行。 翻译贡献者UID:26538

题目描述

PDF

UVA136 Ugly Numbers 优先队列+set_丑数

输入输出格式

输入格式:

 

UVA136 Ugly Numbers 优先队列+set_丑数_02

 

输出格式:

 

UVA136 Ugly Numbers 优先队列+set_其他_03

 

输入输出样例

输入样例#1: 复制

 

输出样例#1: 复制

The 1500'th ugly number is &lt;number&gt;.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int fac[3]={2,3,5};
int main()
{
   priority_queue<ll,vector<ll>,greater<ll> > pq;  //小根
   set<ll>s;
   pq.push(1);
   s.insert(1);
   for(int i=1;;i++)
   {
   	ll x=pq.top();//每回取一个,表明i就是第几个素数,细细体会
   	pq.pop();
   	if(i==1500)
	{
		printf("The 1500'th ugly number is %lld.\n",x);
		break;
	}
	for(int j=0;j<3;j++)
	{
		ll x1=x*fac[j];
	
		if(s.count(x1)==0)
		{
			
			s.insert(x1);
			pq.push(x1);
		}
		
	}
   }
   return 0;
}