方老師最近很喜歡素數,他想玩乙個遊戲:
現在有兩個4位的素數n和m,你一次可以改變n的一位數字,並且改變過後的新數字必須也是個素數,並且也不能有前導0。請問使n變為m最少需要多少步。
例如n=1033 m=8179
那麼可行的變化是:
1033
1733
3733
3739
3779
8779
8179
第一行有乙個整數t(t≤100),代表測試資料的組數。
對於每組資料,每行有兩個4位素數n,m(沒有前導0)
輸出對於每一組資料,如果能夠得到m,輸出最少的步數,否則輸出impossible
sample input
31033
8179
1373
8017
1033
1033
sample output67
0
題意
bfs 不過這個地方搜尋的範圍變成了數字 原理還是一樣的,一層一層的搜尋
對拍了一下,**應該是對的,,
ac**
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ls st<<1
#define rs st<<1|1
#define fst first
#define snd second
#define mp make_pair
#define pb push_back
#define ll long long
#define pii pair
#define vi vector
#define clr(a,b) memset(a, (b), sizeof(a))
#define all(x) x.begin(),x.end()
#define rep(i,s,e) for(int i=(s); i<=(e); i++)
#define tep(i,s,e) for(int i=(s); i>=(e); i--)
const
int inf = 0x3f3f3f3f;
const
int maxn = 10000+10;
const
int mod = 1e9+7;
const
double eps = 1e-8;
void fe()
ll read()
while (ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
return x*f;
}int n, m, cnt = 0;
int pr[maxn];
int prr[maxn];
bool vis[maxn*10];
struct node
};void get_prime()
for (int j = 1; j <= pr[0] && pr[j] <= maxn / i; j++)}}
}bool check(int x, int y)
if(k == 1)
return
true;
return
false;
}void bfs()
for(int i = 0; i < cnt; i++) }}
cout
<< "impossiblie\n";
}int main(int argc, char
const *argv)
while(t--)
return
0;}
CDOJ 885 方老師買錶
方老師買錶 time limit 1000ms memory limit 65535kb 64bit io format lld llu submit status description 由於方老師出色的專題講座,他的名氣迅速擴散到全國各地,並通過各地的講座賺到了很多錢,鑑於現在盛行買錶,於是方老...
老方也玩Cacti RRDTool續
但是,當你實現一種需求時,總想著是否能實現另外一種需求,這就有點像公司老闆對員工的期望一樣,恨不得乙個人的潛能發揮到最大,當成多個人用一樣。搞過web的人都知道,能對頁面的訪問進行授權,充許一些人訪問一些頁面。現在這種情況也需要放在我們的流量監控體系中。公司的流量監控體系所運作的範圍不只是120多台...
CQOI2017 bzoj4823 老C的方塊
可以注意到,每乙個討厭的形狀,都可以看成一條特殊邊兩側的方塊再各連出去乙個方塊。這樣我們可以把格仔分成四類,如圖。每乙個討厭的形狀,都可以看成是黃 黑 紅 綠。因此分四層建圖跑最小割就行了。include include include using namespace std const int m...