HDU 1058 素數因子DP

2021-08-07 23:22:48 字數 1245 閱讀 1527

題目:

乙個數的因子由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

23100

1000

58420

sample output

the 1st humble number is 1.

the 2nd humble number is 2.

the 3rd humble number is 3.

the 4th humble number is 4.

the 11th humble number is 12.

the 12th humble number is 14.

the 13th humble number is 15.

the 21st humble number is 28.

the 22nd humble number is 30.

the 23rd humble number is 32.

the 100th humble number is 450.

the 1000th humble number is 385875.

the 5842nd humble number is 2000000000.

思路:因為因子只有4個,所以可以dp[i]儲存第i個數,dp[i+1]=min(dp[i]*2,dp[i]*3,dp[i]*5,dp[i]*7)輸出格式注意,個位上是1,2,3且十位不為1的輸出st,nd,rd。

#include#includeusing namespace std;

int minnum(int a1, int a2, int a3, int a4)//求四個數的最小值

int main()

; dp[1] = 1; int t2 = 1, t3 = 1, t5 = 1, t7 = 1;

for (int i = 2; i <= 5842; i++)

int n;

while (~scanf("%d",&n)&&n!=0)

return 0;

}

HDU 1058 優先佇列or堆

本來應當是一道優先佇列或者堆的題 因為每個數都應該是已經得到的數 2 3 5 7而得到的 但是 2 7 大於 3 2 這就必須保證每次取得都是沒有拿過的最小的數 但是它主動降低難度在樣例裡賣了個萌 n的範圍是1 5842 而第5842在樣例裡給出了.所以我們在取出乙個數 求出它的 2 3 5 7的時...

hdu 素數回文

ps 題目大意是,給定x和y x y 輸出x和y區間內所有既是素數又是回文的數,5 x y 1e8 這道題很簡單啊,求素數多簡單,求回文多簡單 題目資料範圍過大,導致素數篩直接被捨棄,直接使用乙個for來判斷的話,會超時 可能也不會,網上確實有直接判斷能ac的題解,但是我自己寫的就超時,難道是 人品...

題解 hdu 素數判定

素數判定 題目描述 對於表示式n 2 n 41,當n在 x,y 範圍內取整數值時 包括x,y 39 xinput 輸入資料有多組,每組佔一行,由兩個整數x,y組成,當x 0,y 0時,表示輸入結束,該行不做處理。output 對於每個給定範圍內的取值,如果表示式的值都為素數,則輸出 ok 否則請輸出...