素数路(prime)

题目描述

已知一个四位的素数,要求每次修改其中的一位,并且要保证修改的结果还是一个素数,还不能出现前导零。你要找到一个修改数最少的方案,得到我们所需要的素数。
例如把1033变到8179,这里是一个最短的方案:
1033
1733
3733
3739
3779
8779
8179
修改了6次。

输入

1行,两个四位的素数(没有前导零),表示初始数和目标数。

输出

一个数,表示最少的操作次数。如果不可能,输出“Impossible”。

样例输入

1033 8179

样例输出

6
分析:bfs,预处理四位素数;
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#include <ext/rope>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define vi vector<int>
#define pii pair<int,int>
#define mod 1000000007
#define inf 0x3f3f3f3f
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
const int maxn=1e5+;
const int dis[][]={{,},{-,},{,-},{,}};
using namespace std;
using namespace __gnu_cxx;
ll gcd(ll p,ll q){return q==?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=;while(q){if(q&)f=f*p;p=p*p;q>>=;}return f;}
int n,m,all,a[maxn],vis[maxn];
bool sushu(int p)
{
if(p<=)return false;
else if(p==)return true;
else if(p%==)return false;
for(int i=;i*i<=p;i+=)if(p%i==)return false;
return true;
}
void dfs()
{
queue<int>p;p.push(n);vis[n]=;
while(!p.empty())
{
int u=p.front(),v;
p.pop();
if(u==m)return;
for(int i=;i<=;i++)
{
v=u-u%+i;
if(!vis[v]&&a[v])p.push(v),vis[v]=vis[u]+;
}
for(int i=;i<=;i++)
{
v=u-u/%*+i*;
if(!vis[v]&&a[v])p.push(v),vis[v]=vis[u]+;
}
for(int i=;i<=;i++)
{
v=u-u/%*+i*;
if(!vis[v]&&a[v])p.push(v),vis[v]=vis[u]+;
}
for(int i=;i<=;i++)
{
v=u-u/*+i*;
if(!vis[v]&&a[v])p.push(v),vis[v]=vis[u]+;
}
}
}
int main()
{
int i,j,k,t;
scanf("%d%d",&n,&m);
for(int i=;i<=;i++)
if(sushu(i))a[i]=;
dfs();
if(vis[m])printf("%d\n",vis[m]-);
else puts("Impossible");
//system ("pause");
return ;
}

 
 

素数路(prime)的更多相关文章

  1. 素数路(prime) (BFS)

    问题 C: 素数路(prime) 时间限制: 1 Sec  内存限制: 64 MB提交: 8  解决: 5[提交][状态][讨论版] 题目描述 已知一个四位的素数,要求每次修改其中的一位,并且要保证修 ...

  2. UVa 1644 (筛素数 + 二分) Prime Gap

    题意: 给出一个整数n,如果n是素数输出0,否则输出它后一个素数与前一个素数的差值. 分析: 首先用筛法把前十万个素数都筛出来,然后放到数组里.用二分找到不大于n的最大的素数的下标,如果这个素数等于n ...

  3. 素数(Prime)

    素数的判断: #include<math.h> bool IsPrime(int n) { ) return false; int sqr = (int)sqrt(1.0*n); ; i& ...

  4. 素数路径Prime Path POJ-3126 素数,BFS

    题目链接:Prime Path 题目大意 从一个四位素数m开始,每次只允许变动一位数字使其变成另一个四位素数.求最终把m变成n所需的最少次数. 思路 BFS.搜索的时候,最低位为0,2,4,6,8可以 ...

  5. [POJ268] Prime Distance(素数筛)

    /* * 二次筛素数 * POJ268----Prime Distance(数论,素数筛) */ #include<cstdio> #include<vector> using ...

  6. POJ 3126 Prime Path(素数路径)

    POJ 3126 Prime Path(素数路径) Time Limit: 1000MS    Memory Limit: 65536K Description - 题目描述 The minister ...

  7. poj 1811 Prime Test 大数素数测试+大数因子分解

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 27129   Accepted: 6713 Case ...

  8. 题解报告:poj 2689 Prime Distance(区间素数筛)

    Description The branch of mathematics called number theory is about properties of numbers. One of th ...

  9. POJ 2739 Sum of Consecutive Prime Numbers(素数)

    POJ 2739 Sum of Consecutive Prime Numbers(素数) http://poj.org/problem? id=2739 题意: 给你一个10000以内的自然数X.然 ...

随机推荐

  1. Vasya and String(尺取法)

    Vasya and String time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  2. kindle网络爬虫续集

    简单介绍: 这次我们要爬的网页是:Kindle商店中的今日特价书,其中每周/每月特价书同理,就不再重复了选择这个网页的原因有两个:一是实用,很多人都会经常去看看Kindle特价书有没有自己喜欢的:二是 ...

  3. JS操作select标签

    主要利用这个来实现省市区三级联动的 我利用的是ajax,每一次onchange事件都改变相对应的select中的option,数据全是ajax请求服务器查询数据库而来的,效果还可以,在本地测试的时候速 ...

  4. MC 在1分钟图拿出5分钟,15分钟,30分钟,1小时的K线

    using System; using System.Drawing; using System.Linq; using System.Collections; namespace PowerLang ...

  5. .NET面试题目二

    1.对你来说工作中最重要的是什么? 答:团队目标的实现.(这是所有公司希望员工拥有的素质) 2.为什么愿意为本公司工作? 答:因为我认为我可以与贵公司取得共同的发展.(暗示留下我可能为公司带来的益处) ...

  6. flash 右键菜单隐藏与修改

    来源:http://blog.sina.com.cn/s/blog_7264c84401014fmd.html import flash.ui.ContextMenu;import flash.ui. ...

  7. iOS 导航栏去阴影

    if ([[[UIDevicecurrentDevice] systemVersion] floatValue] >= 6.0) { // 首先要判断版本号,否则在iOS 6 以下的版本会闪退 ...

  8. svg笔记----------path篇

    每个路径都必须以moveto 命令开始 moveto.lineto和closepath <path d="M 10 10 L 100 10z"/> 大写字母命令的坐标是 ...

  9. 老鸟需要知道的一些php系统类函数

    作为一个老手级别的php程序员,知道下面几个php系统级别的函数,不足为多吧!获取系统信息和调试程序的时候应该能用的上! PHP系统类函数 assert函数:检查assertion声明是否错误 ext ...

  10. 如何清除jboss缓存

    要清除Jboss下的缓存,只要清除以下文件的所有文件就可以了:1.D:\JavaServer\jboss-4.2.2.GA\server\default\tmp2.D:\JavaServer\jbos ...