PKU 2545 Hamming Problem
http://poj.org/problem?id=2545
素因数分解したとき、因数にp1,p2,p3しか持たない数のうち、h番目の数字を出力するというような問題。
小さい方から列挙していくだけで大丈夫のよう。
main(){ int p1,p2,p3,h; cin>>p1>>p2>>p3>>h; set<ll> app; priority_queue<ll> q; q.push(-1); while(!q.empty()){ ll c=-q.top();q.pop(); if(app.count(c))continue; app.insert(c); if(SZ(app)==h+1){ cout<<c<<endl; return 0; } if(c<c*p1)q.push(-c*p1); if(c<c*p2)q.push(-c*p2); if(c<c*p3)q.push(-c*p3); } }