UVA 136 Ugly Number(優先佇列)

2021-08-08 21:44:10 字數 923 閱讀 6456

ugly numbers are numbers whose only prime factors are 2, 3 or 5. the sequence

1, 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.

there is no input to this program. output should consist of a single line as shown below, with replaced by the number computed.

the 1500'th ugly number is .

題目求第1500個醜數(因數只有2,3,5的數,包括1)。借用stl的優先佇列,假設佇列中有若干個醜數(初始值為1),每次取出佇列中最小的醜數,判斷其是否是第1500個。若不是,則用其乘以2,3,5,再入隊(保證不重複,借用set.count來判斷)。依此類推,當迴圈到i為1500的時候取出的醜數就是第1500個(因為每次取出的都是對立中最小的)。

#include #include #include #include #include #include #define ll long long

using namespace std;

int main()

; q.push(1);

s.insert(1);

for(int i=1;;i++)

{ll t=q.top();

q.pop();

if(i==1500)

{cout<<"the 1500'th ugly number is "<

UVA136解題報告

先來份錯誤 親愛的小夥伴們,希望你們能找到其中的問題,順便說一句,用的是廣搜 include includeusing namespace std int main printf d n q.front return 0 上面是我用很短的時間寫出來的很漂亮的 如果說有什麼不完美的地方,那就是他是錯的...

Uva136 醜數 優先佇列

找出第1500個素因子只能有2或3或5的數。懵逼了吧,並不是素因子篩,用2,3,5去篩並不能得到滿足醜數要求的數,例如14就篩不掉。優先佇列每次取乙個最小的數x,2x,3x,5x,都是醜數,但是每次要判斷是否有重數 set 取1500,每次都是取出最小的數,取1500次之後就是第1500個數。inc...

例題5 7 醜數 UVa136

演算法 競賽入門經典 第2版 第5章c 與stl入門 例 題5 7 醜數 uva136 感悟。菜題乙個。2 基本思路,能被2整除,一直除2 能被3整除,一直除3 能被5整除,一直除5 最後值為1,則為醜數。3 編好提交 limit exceeded,菜題不菜,感受到競賽題的威力。4 用printf ...