cdoj 851 方老师与素数 bfs
2016-10-22 13:51
316 查看
方老师与素数
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)Submit Status
方老师最近很喜欢素数,他想玩一个游戏:
现在有两个44位的素数nn和mm,你一次可以改变nn的一位数字,并且改变过后的新数字必须也是个素数,并且也不能有前导00。请问使nn变为mm最少需要多少步。
例如n=1033n=1033 m=8179m=8179
那么可行的变化是:
1033 1733 3733 3739 3779 8779 8179
Input
第一行有一个整数T(T≤100)T(T≤100),代表测试数据的组数。对于每组数据,每行有两个44位素数N,MN,M(没有前导00)
Output
对于每一组数据,如果能够得到mm,输出最少的步数,否则输出Impossible
Sample input and output
Sample Input | Sample Output |
---|---|
3 1033 8179 1373 8017 1033 1033 | 6 7 0 |
Source
2014 UESTC Training for Search Algorithm#include<bits/stdc++.h> using namespace std; #define ll long long #define pi (4*atan(1.0)) #define eps 1e-14 const int N=2e5+10,M=1e6+10,inf=1e9+10,mod=1e9+7; const ll INF=1e18+10; int p[1110]; int prime(int n) { if(n<=1) return 0; if(n==2) return 1; if(n%2==0) return 0; int k, upperBound=n/2; for(k=3; k<=upperBound; k+=2) { upperBound=n/k; if(n%k==0) return 0; } return 1; } int check(int x,int y) { int sum=0; while(x) { if(x%10!=y%10)sum++; x/=10; y/=10; } return sum; } int flag[10010]; struct is { int num; int ans; is(){} is(int x,int y) { num=x; ans=y; } }; int main() { int cnt=0; for(int i=1000;i<=10000;i++) if(prime(i)) p[cnt++]=i; int T; scanf("%d",&T); while(T--) { for(int i=0;i<cnt;i++) flag[p[i]]=0; int n,m; scanf("%d%d",&n,&m); flag =1; queue<is>q; q.push(is(n,0)); int out=inf; while(!q.empty()) { is v=q.front(); q.pop(); if(v.num==m) { out=v.ans; break; } for(int i=0;i<cnt;i++) { if(!flag[p[i]]&&check(v.num,p[i])==1) { flag[p[i]]=1; q.push(is(p[i],v.ans+1)); } } } if(out!=inf) printf("%d\n",out); else printf("Impossible\n"); } return 0; }
相关文章推荐
- CDOJ (UESTC) 851 方老师与素数(bfs)
- CDOJ-#851 方老师与素数(BFS)
- CD0J/POJ 851/3126 方老师与素数/Prime Path BFS
- uestc 851 方老师与素数
- CDOJ 414 Eight Puzzle 搜索 BFS
- 第十题:(BFS)素数路径
- Prime Path(素数筛选+bfs)
- cdoj915-方老师的分身 II (长度不小于k的最短路)【spfa】
- bfs() 出素数环
- POJ 3126 Prime Path 素数筛,bfs
- (BFS11.1.1)POJ 3126 Prime Path(计算从初始素数到目标素数的最短路径长度)
- CDOJ(UESTC) 149 解救小Q(bfs中涉及传送带的问题)
- cdoj914-方老师分身 I 【dijkstra】
- Poj 3126 Prime Path (BFS 素数打表)
- CDOJ 149 解救小Q 搜索 BFS
- POJ 3126 -- 素数判定(埃氏筛法)+BFS
- F - Prime Path POJ 3126 筛选素数+bfs
- POJ 3126 Prime Path(素数,BFS最短路)
- BFS变换素数,POJ(3126)
- POJ - 3126 Prime Path (素数表+BFS)