poj 3126 容器 素數篩法

2021-08-07 22:58:53 字數 1485 閱讀 4335

主要路徑

時間限制:1000ms

記憶體限制:65536 k

共提交:22998

接受:12745 描述

— — 它是乙個不時改變這樣的事情,為了不讓敵人在黑暗中的安全問題。

— — 但你看,我選擇了我的號碼 2023年很好的理由。我是總理,你知道 !

— — 我知道,所以你的新號碼 8179 也是乙個素數。你將不得不在你辦公室的門上四舊的貼上四個新的數字。

— — 不,它不是那麼簡單。假設我更改的第乙個數字為 8,然後將讀取數不是素數的 8033 !

— — 我明白了,被總理你受不了吃非質數開你的門甚至幾秒鐘。

— — 正確 !所以我必須發明一種方案從 2023年 8179 乘去質數的路徑只有乙個數字從乙個總理改的下乙個素數。

現在,財政部長,,一直在偷聽的人進行了干預。

— — 沒有不必要的開支,請 !我碰巧知道乙個數字的**是一英鎊。

— — 嗯,在這種情況下我需要乙個電腦程式,儘量減少費用。你不知道一些非常廉價的軟體大師,是嗎?

— — 事實上,我做。你看,這個程式設計競賽地去......幫助總理找最便宜的主要路徑之間任何兩個給定四位數素數 !第乙個數字必須非零,當然是。在上述情況下,這裡有乙個解決方案。

1033

2023年

3733

3739

3779

8779

8179

此解決方案的成本是 6 磅。請注意,數字 1 了貼上在步驟 2 中不可以重用的最後一步 — — 必須購買新的 1。

輸入一線與正數: 測試用例 (頂多 100) 數目。然後為每個測試用例,一條線與兩個數字隔開的空白。這兩個數字是四位數質數 (沒有前導零)。

輸出每個案件,無論是用數字說明最小成本或包含不可能一詞的的一行。

示例輸入

3

1033 8179

1373 8017

1033 1033

示例輸出

6

70

#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...