第N个丑数
#include <bits/stdc++.h> using namespace std; #define ll long long /* 把只包含质因子2、3和5的数称作丑数(Ugly Number)。 例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。 */ //第N个丑数 ll a[3]={2,3,5}; int main() { int n; scanf("%d",&n); priority_queue<ll,vector<ll>,greater<ll> >q; set<ll>se; se.insert(1);q.push(1); for(int i =1;i<=10;i++){ ll x= q.top();q.pop(); // printf("%lld\n",x); if(i==n) { printf("%lld\n",x); break; } for(int j =0;j<3;j++) { ll num = x*a[j]; if(!se.count(num)){//避免重复 se.insert(num); q.push(num); } } } return 0; }