题目: 我们把只包含因子2,3和5的数称作为丑数。求按从小到大的顺序的第1500个丑数。 例如6,8都是丑数,但是14不是,因为它包含因子7。习惯上我们把1作为第一个丑数。 #include<iostream> #include<vector> #include<queue> #include<set> using namespace std; typedef long long LL; const int coeff[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(); pq.pop(); if(i == 1500) { cout << "The 1500'th ugly number is " << x << ".\n"; break; } for(int j = 0; j < 3; j++) { LL x2 = x * coeff[j]; if(!s.count(x2)) { s.insert(x2); pq.push(x2); } } } return 0; }