首页 > 其他分享 >UVA12101 Prime Path

UVA12101 Prime Path

时间:2024-03-10 16:00:55浏览次数:23  
标签:Prime 10 int 质数 UVA12101 new Path 1033 first

Prime Path

\(link\)

题面翻译

给你个整数 \(T(T\leq 100)\),接下来 \(T\) 行数据。

每次给你俩数 \(a,b\)(保证都是四位数且都为无前导零的质数),问 \(a\) 经过几次变换可以变成 \(b\)。输出最少可以经过几次变换变成 \(b\) 的次数。如果变不成直接输出 Impossible

规定 \(a\) 可以变成 \(c\) 当且仅当 \(a,c\) 都为质数,且只改变 \(a\) 其中的一位。

例如:\(1033\to8179\),有一种方法是:\(1033\to1733\to3733\to3739\to3779\to8779\to8179\),最少变换了 \(6\) 次。

题目描述

PDF

输入格式

输出格式

样例 #1

样例输入 #1

3
1033 8179
1373 8017
1033 1033

样例输出 #1

6
7
0

思路

由题意,可得题目大致分为两部分:质数筛和BFS.

然后就套模版就行了,一个比较水的BFS模版题。

代码实现

#include<bits/stdc++.h>
using namespace std;

vector<int> p;
bool not_prime[10005];

bool v[10002];
int ans=0;
int n,m;
int k[5];
void pri(int k)
{
	for(int i=2;i<=k;i++)
	{
		if(!not_prime[i])
		{
			p.push_back(i);
		}
		for(int _pri:p)
		{
			if(i*_pri>k) break;
			not_prime[i*_pri]=true;
			if(i%_pri==0) break;
		}
	}
}
void into(int x)
{
	memset(k,0,sizeof(k));
	k[1]=x/1000;
	k[2]=x/100%10;
	k[3]=x/10%10;
	k[4]=x%10;
}
int outto()
{
	return k[1]*1000+k[2]*100+k[3]*10+k[4];
}
void bfs()
{
	memset(v,false,sizeof(v));
	queue<pair<int,int>> q;
	pair<int,int> p;
	p.first=n,p.second=0;
	q.push(p);
	v[n]=true;
	while(!q.empty())
	{
		int x=q.front().first,y=q.front().second;
		q.pop();
		
		if(x==m)
		{
			cout<<y<<endl;
			return ;
		}
		
		into(x);
		for(int i=1;i<=4;i++)
		{
			for(int j=0;j<=9;j++)
			{
				if(i==1&&j==0)
				{
					continue;
				}
				int t=k[i];
				k[i]=j;
				pair<int,int> _new;
				_new.first=outto();
				_new.second=y+1;
				if(!v[_new.first]&&!not_prime[_new.first])
				{
					v[_new.first]=true;
					q.push(_new);
				}
				k[i]=t;
			}
		}
	}
	cout<<"Impossible."<<endl;
}
int main()
{
	ios::sync_with_stdio(false);
	memset(not_prime,0,sizeof(not_prime));
	pri(10000);
	int t;
	cin>>t;
	while(t--)
	{
		cin>>n>>m;
		bfs();
	}
	return 0;
}

标签:Prime,10,int,质数,UVA12101,new,Path,1033,first
From: https://www.cnblogs.com/j1hx-oi/p/18064274

相关文章

  • 告别os.path,拥抱pathlib
    pathlib模块是在Python3.4版本中首次被引入到标准库中的,作为一个可选模块。从Python3.6开始,内置的open函数以及os、shutil和os.path模块中的各种函数都可以正确地使用pathlib.Path对象了。最初,pathlib给人的感觉只是os.path的一个不必要的面向对象版本,不过,当你实际去......
  • Binary Tree Maximum Path Sum
    SourceGivenabinarytree,findthemaximumpathsum.Thepathmaystartandendatanynodeinthetree.ExampleGiventhebelowbinarytree,1/\23Return6.题解1-递归中仅返回子树路径长度题目很短,要求返回最大路径和。咋看一下......
  • python urllib.parse urlparse path url路径分割
    前言全局说明pythonurllib.parseurlparsepathurl路径分割一、获取路径部分#!/usr/bin/envpython3#coding:UTF-8#-*-coding:UTF-8-*-fromurllib.parseimporturlparseurl='http://www.baidu.com/aa/bb/cc/index.html'print("url:",url)parsed......
  • [Maven] pom.xml报"parent.relativePath" of POM xxxxxx
    0序1问题描述springboot项目pom.xml/maven报'parent.relativePath'ofPOMcom.know-data.framework:know-data-study-springboot:1.0.0-SNAPSHOT(F:\xxx\know-data-parent\know-data-study-parent\know-data-study-springboot\pom.xml)pointsatcom.k......
  • P9632 [ICPC2020 Nanjing R] K Co-prime Permutation
    原题链接题解我一开始也很困惑,然后我想要不数据范围小一点我构造看看当\(n=5\)时\(k=0\)可不可以\(k=1\)可不可以\(k=2\)可不可以然后根据直觉,\(gcd(a,a+1)\)始终为一,且一和任何数的最大公约数都为一,自己和自己的最大公约数还是自己,所以萌生了以下想法把一后面......
  • SqlServer:FOR XML PATH('')
    业务需求:需要将一个流程的所有节点办理人,接收时间,以每一条requestid为主,横向的排列起来展示。而OAe9里面,workflow_currentoperator表就是存节点接收人,接收时间的。 它的结构如下:一个requestid下面有很多节点数据,每个节点也可能重复,因为有办理人,抄送人。在结构上,我们需要将......
  • 深入理解与应用CSS clip-path 属性
    clip-pathclip-path是什么clip-path是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐藏。通过定义这个剪切路径(clippingpath),您可以创造出非矩形的裁剪形状,使元素内容按特定的几何形状展示。clip-path的工作原理clip-path属性通过定义......
  • macOS m1芯片报错 java.lang.UnsatisfiedLinkError: no taos in java.library.path
    项目中有用到TDengine,MacOSm1芯片本地开发启动项目报错如下java.lang.UnsatisfiedLinkError:notaosinjava.library.path方案一(推荐)以上错误是因为java在连接TDengine数据库的时候没有找到本地函数库。本地安装一下TDengine,然后在/usr/local/lib/下就会有taos函数库。因此......
  • Though Our Paths May Diverge(JSOI 2024 游记)
    Isn’titsupposedtobesunnynow?且当是JSOI2024的游记吧。省选前的精神状态处于一种微妙的平衡。确实也不断在给自己心理暗示,自己有省队水平,但是其实无论是哪边的模拟打得都属于比较稀烂的水平,有的时候真的是一题不会签不上到。跟不上zhy和黄色蜜蜂的节奏啊,大概就......
  • vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量
    vscode两种定位跳转的方法ctrl+p方法1path:行号方法2#变量名-针对$store变量不好找的方案方法1可以备注在代码里面问题$store的变量不能跳转,有跳转插件也不能跳转解决方案方法1备注上文件地址和行号,然后选择备注那行ctrl+cctrl+p回车不足的地方是代码变了,行号不......