[LYOI25]素数路
来源:互联网 发布:网络推广信息方案 编辑:程序博客网 时间:2024/06/05 00:12
题目介绍
题目描述
把一个4位素数 N 通过 K 次转换变成4位素数 M 输出 K 的最小值。
转换要求:只能改变数 N 中的一位(没有前导零)而且在转换过程中的每个数也要为素数。
输入格式
一行,两个四位的素数(没有前导零),表示初始数 N 和目标数 M 。
输出格式
一个数,表示最少的操作次数 K 。如果不可能,输出 “Impossible”。
输入样例
1033 8179
输出样例
6
数据范围与提示
对于100%的数据,满足1000<N,M<10000;
题目思路
此题正解为bfs。首先把N加入队列,接下来每次只要分解每一位,依次变换,检验变换的数是否为素数,若是则加入队列即可。但是本题我们应该考虑,变换过程中可能出现大量重复的数,所以可以进行一次预处理,求出素数表即可。
代码
#include <cstdio>#include <queue>#include <cmath>#include <cstring>#define MAXN 10000std::queue <int> que;int visit[MAXN];int isPrime[MAXN];int n,k;int steps;int ans[101];int possible;void getPrime(){ memset(isPrime,1,sizeof(isPrime)); for(int i=1000;i<10000;i++){ for(int j=2;j<=sqrt((double)i);j++){ if(i%j==0){ isPrime[i]=0; break; } } }}void judge(int n){ if(!visit[n]&&isPrime[n]){ visit[n]=1; que.push(n); }}void bfs(int n,int k){ int head,que_size,next; memset(visit,0,sizeof(visit)); possible=0; steps=0; while(!que.empty()) que.pop(); visit[n]=1; que.push(n); while(!que.empty()) //lever order traverse { que_size=que.size(); while(que_size--) { head=que.front(); que.pop(); if(head==k) { possible=1; return; } for(int i=0;i<=9;i++) { if(i&&i!=head/1000) //变换千位 { next=i*1000+head%1000; judge(next); } if(i!=(head%1000)/100) //变换个位 { next=(head/1000)*1000+i*100+head%100; judge(next); } if(i!=(head%100)/10) //变换十位 { next=(head/100)*100+i*10+head%10; judge(next); } if(i!=head%10) //变换个位 { next=(head/10)*10+i; judge(next); } } } steps++; }}int main() { int test_cases; getPrime(); scanf("%d%d",&n,&k); bfs(n,k); if(possible) printf("%d\n",steps); else printf("Impossible\n"); return 0;}
阅读全文
1 0
- [LYOI25]素数路
- 素数路
- 【SPFA】 素数路
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- 素数
- springmvc+jersey实现图片跨服务器上传到并回显
- SOC电源标志 说明 VCC、VSS、VDD、VEE、VPP、Vddf
- LightOJ1248---Dice (III) (概率问题)
- $stateParams传值 undefined原因
- Java学习之Iterator(迭代器)的一般用法 (转)
- [LYOI25]素数路
- Django一(安装&入门)
- 设计模式(十二):备忘录模式
- 宏基因组拼接方法
- MySQL中varchar类型转int
- C# WinForm中PreviewKeyDown、KeyDown、KeyPress、KeyUp区别与联系
- linux 设置ftp服务器
- Firefox v54.0 稳定版
- 单链表元素的插入