3126POJ
2015-08-08 11:03
295 查看
给你两个数a,b而且都是素数,问你最少几步a能转化成b这里每一步是变任意一位的大小,并且变化之后的数也必须是素数。
当然了,根据前面的问题,所以这道题需要用广搜,因为就是四位数,所以首先我们先找出所有四位数的素数,这个很容易。然后那,然后我们就枚举每一位的变换,知道找到为止。
当然了,根据前面的问题,所以这道题需要用广搜,因为就是四位数,所以首先我们先找出所有四位数的素数,这个很容易。然后那,然后我们就枚举每一位的变换,知道找到为止。
#include<iostream> #include<cstdio> #include<string.h> #include<string> #include<stack> #include<set> #include<algorithm> #include<cmath> #include<vector> #include<map> #include<queue> #define ll __int64 #define lll unsigned long long #define MAX 10000009 #define MAXN 2009 #define eps 1e-8 #define INF 0x7fffffff #define mod 1000000007 #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 using namespace std; int a,b; int w[4] = {1000,100,10,1}; int Prime[10009]; int vis[10009]; int ans[10009]; queue<int>Q; void init() { for ( int i = 0 ; i < 10000 ; i ++ ) Prime[i] = true; Prime[0] = false; Prime[1] = false; for ( int i = 2 ; i < 100 ; i ++ ) { if ( Prime[i] ) for ( int j = 1 ; i*j < 10000 ; j ++ ) Prime[i*j] = false; } } //int s(int x,int a) //{ // a = a/x; // a = a%10; // return a; //} void bfs() { while(!Q.empty())Q.pop(); vis[a] = 1; Q.push(a); ans[a] = 0; int ss; while(!Q.empty()) { int v = Q.front();Q.pop(); if(v==b) { return ; } for(int i = 0; i<4; i++) { int x = v; x = x / w[i]; x = x % 10; int num = v - x*w[i]; //cout<<num<<endl; for(int j = 0;j<=9;j++) { if(i==0&&j==0)continue; int sum = j*w[i] + num; if(!vis[sum]&&Prime[sum]) { vis[sum] = 1; ans[sum] = ans[v] + 1; Q.push(sum); } } } } return ; } int main() { int T; scanf("%d",&T); while(T--) { init(); scanf("%d%d",&a,&b); memset(vis,0,sizeof(vis)); memset(ans,0,sizeof(ans)); bfs(); printf("%d\n",ans[b]); } return 0; }
相关文章推荐
- [CareerCup] 4.8 Contain Tree 包含树
- .net 架构师/经理招聘,长期有效
- [算法专题] 深度优先搜索&回溯剪枝
- sublime学习心得
- UIAlertView 实现自动消失
- 南邮 OJ 2073 FFF
- 支撑4.5亿活跃用户的WhatsApp架构概览
- 30.表视图(UITableView)和界面传值
- Google 镜像站搜集[转]
- sublime学习心得
- sublime学习心得
- Mac管理员账户恢复,找回删除的账户
- jQuery实现下拉框选择图片功能实例
- 线程同步的方法
- Android View触摸事件传递机制
- iOS 7:漫谈集合视图(CollectionView)
- 南邮 OJ 2071 大发明家的童年
- 圆与旋转矩形的碰撞检测
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
- uvalive7040/cf gym 100548 Color(2014西安区域赛F题)