主要路徑
時間限制:1000ms
記憶體限制:65536 k
共提交:22998
接受:12745 描述
— — 它是乙個不時改變這樣的事情,為了不讓敵人在黑暗中的安全問題。
— — 但你看,我選擇了我的號碼 2023年很好的理由。我是總理,你知道 !
— — 我知道,所以你的新號碼 8179 也是乙個素數。你將不得不在你辦公室的門上四舊的貼上四個新的數字。
— — 不,它不是那麼簡單。假設我更改的第乙個數字為 8,然後將讀取數不是素數的 8033 !
— — 我明白了,被總理你受不了吃非質數開你的門甚至幾秒鐘。
— — 正確 !所以我必須發明一種方案從 2023年 8179 乘去質數的路徑只有乙個數字從乙個總理改的下乙個素數。
現在,財政部長,,一直在偷聽的人進行了干預。
— — 沒有不必要的開支,請 !我碰巧知道乙個數字的**是一英鎊。
— — 嗯,在這種情況下我需要乙個電腦程式,儘量減少費用。你不知道一些非常廉價的軟體大師,是嗎?
— — 事實上,我做。你看,這個程式設計競賽地去......幫助總理找最便宜的主要路徑之間任何兩個給定四位數素數 !第乙個數字必須非零,當然是。在上述情況下,這裡有乙個解決方案。
1033此解決方案的成本是 6 磅。請注意,數字 1 了貼上在步驟 2 中不可以重用的最後一步 — — 必須購買新的 1。2023年
3733
3739
3779
8779
8179
輸入一線與正數: 測試用例 (頂多 100) 數目。然後為每個測試用例,一條線與兩個數字隔開的空白。這兩個數字是四位數質數 (沒有前導零)。
輸出每個案件,無論是用數字說明最小成本或包含不可能一詞的的一行。
示例輸入
3示例輸出1033 8179
1373 8017
1033 1033
670
#include#include#includeusing namespace std;
const int n=10000;
const int inf=10000;
bool isprime[n];
void initprime()
{ fill(isprime,isprime+n,true);
// for(int i=0;iq;
for(i=1000;i>t;
while(t--)
{ cin>>begin>>end;
int res=bfs(begin,end);
if(res==inf)
cout<
POJ3126素數路徑
注意素數的判斷演算法不要馬虎寫錯 bfs,ac 如下 include includeusing namespace std int vis 10000 判斷節點是否入隊過 struct node link 10000 int cal 4 int loc 4 10 判斷某乙個數字能否重新被使用,0表示...
poj3126 埃式篩法 bfs
題意 求素數a變換到素數b的最小步數,每次只能更改一位,且更改後的數也是素數。每次輸入的兩個素數都是4位數。解法一 利用埃式篩法打表,用陣列記錄素數,把所有素數放在乙個陣列中,然後在這個陣列的基礎上進行bfs。解法二 打表記錄每個數的素數性質,然後將a的每一位依次改變,進行bfs,前面的打表在bfs...
POJ 3126 題解 數論素數篩 搜尋
有乙個四位的素數s,每次改變一位,變成另外乙個素數t 要求每次改變後的數還是素數 最少需要改變幾次 time 1000 ms memory 65536 kb 素數篩 先篩出1e5以內的素數 然後bfs搜尋,搜尋改變任意一位後的素數 include include include include in...