本來應當是一道優先佇列或者堆的題 因為每個數都應該是已經得到的數*2 *3 *5 *7而得到的 但是 2*7 大於 3*2 這就必須保證每次取得都是沒有拿過的最小的數
但是它主動降低難度在樣例裡賣了個萌 n的範圍是1~5842 而第5842在樣例裡給出了..所以我們在取出乙個數 求出它的*2 *3 *5 *7的時候做一下判斷 如果大於最後一位就直接break 因為相乘的順序在 可以省一點時間
在判斷某個數是否出現過的時候 開不出那麼大的vis陣列 所以直接for迴圈從ans陣列中尋找 所幸沒有超時qaq
尤其需要注意的是題目的思考並不難 但是輸出的英語用法是坑
1 2 3 分別是 first second third 所以縮寫的是 st nd rd
21 22 23 等 是 twenty - first twenty - second twenty- third 等 它們的縮寫都是 st nd rd
但是11 12 13 不是.. 它們的第次縮寫都是 th
(我的輸出**寫得判斷很麻煩..因為我懶得改..)
#include#include#include#include#include#include#includeusing namespace std;long long int e[6050];
int w;
bool find(long long int x)
}else if(i==1)
}else if(i==2)
}else if(i==3)}}
}}int main()
else if(n%10==1&&n%100!=11)
else if(n%10==2&&n%100!=12)
else if(n%10==3&&n%100!=13)
else
printf("the %dth humble number is ",n);
}printf("%i64d.\n",e[n-1]);
}}
HDU 1058 素數因子DP
題目 乙個數的因子由2,3,5,7構成,則這個數為 humble number.前20個1 2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27,輸入n。輸出第n個 humble number.sample input 123 4111213 2122 2...
優先佇列《堆》
1.模型 兩個基本操作 insert等價enqueue deletemin刪除最小者 dequeue 2.簡單的實現 1 簡單鍊錶 遍歷刪除min或者排序刪除min 2 使用二叉查詢樹。反覆除去min會使得樹不平衡,並且bst還支援許多不需要的操作。3.二叉堆 優先佇列的實現普遍使用二叉堆,堆有兩個...
優先佇列 堆
印表機列印作業一般是放在佇列中的。如果按照先來先列印的順序,有乙個100頁的列印任務,那麼會讓後面短小的任務等待很長時間。更合理的做法也許是最後處理最耗時的列印任務,不管它是不是最後提交上來的。在多使用者作業系統中,作業系統讓哪個程式使用cpu,是需要決定從佇列裡面選擇的。一般做法是從隊頭獲得程式,...