農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數。
例如有四根肋骨的數字分別是:7 3 3 1,那麼全部肋骨上的數字 7331是質數;三根肋骨 733是質數;二根肋骨 73 是質數;當然,最後一根肋骨 7 也是質數。7331 被叫做長度 4 的特殊質數。
寫乙個程式對給定的肋骨的數目 n (1<=n<=8),求出所有的特殊質數。數字1不被看作乙個質數。
單獨的一行包含n。
按順序輸出長度為 n 的特殊質數,每行乙個。
在這裡給出一組輸入。例如:
4
在這裡給出相應的輸出。例如:
2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393
剛開始一看這個題我以為是列舉,然後輸出符合要求的數即可,但是這樣就會超時,重新整理思路後,這道題用遞迴可以做。
我們從位數小到位數大一次判斷,以7331為例:最先判斷7,再判斷73,再判斷733,最後判斷7331。這樣轉換起來相對簡單一點,只需要每次乘10加i(x10+i)。
遞迴函式dfs有兩個引數,第乙個是判斷是否是素數的數x,第二是這個數的長度len,如果長度len等於n,輸出x,小於時就進入1-9的迴圈,判斷(x10+i)是否為素數,滿足就呼叫dfs(x*10+i,len+1)。能保證每次遞迴的數都是質數。
#include
#include
using
namespace std;
int n;
bool
just
(int x)
//判斷素數
return
true;}
void
dfs(
int x,
int len)
else}}
}int
main()
藍橋杯 演算法提高VIP 特殊的質數肋骨
題目描述 農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數。例如有四根肋骨的數字分別是 7 3 3 1,那麼全部肋骨上的數字 7331是質數 三根肋骨...
DFS 特殊的質數肋骨
時間限制 1000ms 記憶體限制 256000kb 題目描述 農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上...
特殊的質數肋骨 DFS
農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上的數字 7331是質數 三根肋骨 733是質數 二根肋骨 73 ...