方老師最近很喜歡素數,他想玩乙個遊戲:
現在有兩個
4 位的素數
n 和
m ,你一次可以改變
n 的一位數字,並且改變過後的新數字必須也是個素數,並且也不能有前導
0 。請問使
n 變為
m 最少需要多少步。例如n
=1033
m=8179
那麼可行的變化是:
10331733
3733
3739
3779
8779
8179
第一行有乙個整數t(
t≤100)
,代表測試資料的組數。
對於每組資料,每行有兩個
4 位素數n,
m (沒有前導
0 )
對於每一組資料,如果能夠得到
m ,輸出最少的步數,否則輸出impossible
sample input
sample output
31033 8179
1373 8017
1033 1033
670
搜尋四位數的每一位
#include #include #include #include using namespace std;
int n,m;
bool vis[10001];
bool prime[10001];
int bfs()
q.push(t);
continue;
}if(t==m)
int temp;
for (int i=1; i<=9; i++) //千位
}for (int i=0; i<=9; i++) //百位
}for (int i=0; i<=9; i++) //十位
}for (int i=0; i<=9; i++) //個位}}
return -1;
}int main()
else
}for (int i=3; i*i<10000; i++)}}
scanf("%d",&t);
while (t--)
else
}return 0;
}
CDOJ 851 方老師與素數 BFS
方老師最近很喜歡素數,他想玩乙個遊戲 現在有兩個4位的素數n和m,你一次可以改變n的一位數字,並且改變過後的新數字必須也是個素數,並且也不能有前導0。請問使n變為m最少需要多少步。例如n 1033 m 8179 那麼可行的變化是 1033 1733 3733 3739 3779 8779 8179 ...
UESTC 885 方老師買錶 狀壓DP
將方格的擺放分成兩種 1.水平擺放 此時所佔的兩個格仔都記為1。2.豎直擺放 此時底下那個格仔記為1,上面那個記為0。這樣的話,每行都會有乙個狀態表示。定義 dp i s 表示考慮已經填到第i行,這一行狀態為s的方法數 先預處理出所有滿足條件的第一行,然後從第二行開始轉移。最後答案為dp n 1當n...
UESTC 邱老師降臨小行星(記憶化搜尋)
人贏邱老師和任何男生比,都是不虛的。有一天,邱老師帶妹子 們 來到了乙個 n 行 m 列平面的小行星。對於每乙個著陸地點,邱老師總喜歡帶著妹子這樣走 假設著陸地點為 r 0,c0 那麼他們下一步只能選擇相鄰格點,向四周走,即 r 0 1,c0 r 0 1,c0 r 0,c0 1 或 r 0,c0 1...