HDU 1431 素數回文 離線打表

2022-05-18 14:42:11 字數 824 閱讀 7653

題目描述:給定乙個區間,將這個區間裡所有既是素數又是回文數的數輸出來。

題目分析:這題的這個資料範圍比較大,達到了10^8級別,而且輸入的資料有多組,又因為判斷乙個數是否是回文數貌似只有暴力判斷,時間限制是1000ms,所以如果對於每組資料輸入都暴力判斷的話,應該就tle了,那麼我們該怎麼辦呢。我們想到回文數本來就不多,再加上還必須要是素數,猜想資料範圍雖然非常大,但是在這個區間裡面滿足條件的數應該不多,我算了一下,只有700多個,所以我們很自然地想到用離線打表,將這個區間內所有的滿足條件的數存到乙個陣列裡面去,然後輸出的時候判斷每乙個數是否在輸入的這個區間裡面就可以了。

先給出本地打表**:

1 #include2 #include3 #include4

const

int size = 100000005;5

bool

prim[size];

6void dabiao()

17}

18bool judge(int k)

24for(int i = 0;ii)

25if(num[i] != num[n-i-1

])26

return

false;27

return

true;28

}29intmain( )

view code

下面是提交**:

1 #include2

int ans[800] =;45

intmain()

13return0;

14 }

view code

hdu 1431 素數回文 打素數表

關鍵 1.找某個範圍內素數的個數,先採用素數打表預處理 就是在輸入之前判斷好了哪些是素數 效率高,否則超時,用一標誌陣列isprime i 記錄這個數i是不是素數,為了避免超記憶體,這個陣列是bool型別 2.題目給的範圍到了10億,依然會超記憶體,怎麼縮小這個陣列的大小?我們只有自己在機上先跑一遍...

hdu1431素數回文

problem description xiaoou33對既是素數又是回文的數特別感興趣。比如說151既是素數又是個回文。現在xiaoou333想要你幫助他找出某個範圍內的素數回文數,請你寫個程式找出 a 跟b 之間滿足條件的數。5 a b 100,000,000 input 這裡有許多組資料,每組...

hdu 1431 素數回文

problem description xiaoou33對既是素數又是回文的數特別感興趣。比如說151既是素數又是個回文。現在xiaoou333想要你幫助他找出某個範圍內的素數回文數,請你寫個程式找出 a 跟b 之間滿足條件的數。5 a b 100,000,000 input 這裡有許多組資料,每組...