題目描述:給定乙個區間,將這個區間裡所有既是素數又是回文數的數輸出來。
題目分析:這題的這個資料範圍比較大,達到了10^8級別,而且輸入的資料有多組,又因為判斷乙個數是否是回文數貌似只有暴力判斷,時間限制是1000ms,所以如果對於每組資料輸入都暴力判斷的話,應該就tle了,那麼我們該怎麼辦呢。我們想到回文數本來就不多,再加上還必須要是素數,猜想資料範圍雖然非常大,但是在這個區間裡面滿足條件的數應該不多,我算了一下,只有700多個,所以我們很自然地想到用離線打表,將這個區間內所有的滿足條件的數存到乙個陣列裡面去,然後輸出的時候判斷每乙個數是否在輸入的這個區間裡面就可以了。
先給出本地打表**:
1 #include2 #include3 #include4view codeconst
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( )
下面是提交**:
1 #include2view codeint ans[800] =;45
intmain()
13return0;
14 }
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 這裡有許多組資料,每組...