首页 > 其他分享 >Poj3126 Prime Path (BFS+筛素数)

Poj3126 Prime Path (BFS+筛素数)

时间:2024-02-02 18:34:32浏览次数:31  
标签:Prime aa bb int prime Poj3126 vis BFS include

#include<iostream>
#include<queue>
#include<cstring>
const int N=10010;
int t,aa,bb,prime[N],vis[N],step[N];
using namespace std;
void prime_(){ //埃式筛法
    prime[0]=prime[1]=1;
    for(int i=2;i<10000;i++){
        if(prime[i]) continue;
        for(int j=i*2;j<10000;j+=i){
            prime[j]=1;
        }
    }
}
void bfs(int aa,int bb){
    queue<int> q;
    int a,b,c,d,s,x;
    q.push(aa);
    while(!q.empty()){
        x=q.front();
        q.pop();
        if(x==bb){
            cout<<step[x]<<endl;
            return ;
        }
        a=x/1000; //千 
        b=(x/100)%10; //百 
        c=(x%100)/10;//十 
        d=x%10;//个 
        for(int i=1;i<=9;i++){ //枚举千位 
            if(i==a) continue;
            s=i*1000+b*100+c*10+d;
            if(prime[s]==0 && !vis[s]){
                vis[s]=1;
                step[s]=step[x]+1;
                q.push(s);
            }
        }
        for(int i=0;i<=9;i++){ //枚举百位 
            if(i==b) continue;
            s=a*1000+i*100+c*10+d;
            if(prime[s]==0 && !vis[s]){
                vis[s]=1;
                step[s]=step[x]+1;
                q.push(s);
            }
        }
        for(int i=0;i<=9;i++){ //枚举十位
            if(i==c) continue;
            s=a*1000+b*100+i*10+d;
            if(prime[s]==0 && !vis[s]){
                vis[s]=1;
                step[s]=step[x]+1;
                q.push(s);
            }
        }
        for(int i=0;i<=9;i++){ //枚举个位
            if(i==d) continue;
            s=a*1000+b*100+c*10+i;
            if(prime[s]==0 && !vis[s]){
                vis[s]=1;
                step[s]=step[x]+1;
                q.push(s);
            }
        }
    }
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    prime_();
    cin>>t;
    while(t--){
        cin>>aa>>bb;
        memset(vis,0,sizeof(vis));
        memset(step,0,sizeof(step));
        bfs(aa,bb);
    }
    return 0;
}

18:17:10

标签:Prime,aa,bb,int,prime,Poj3126,vis,BFS,include
From: https://www.cnblogs.com/accbulb/p/18003653

相关文章

  • CMU-15445(Fall 2023) Project0 C++ Primer 个人笔记
    CMU-15445Project0c++语法问题我直接问的gpt测试文件测试文件都存放在/bustub-private/test目录下,可以自己修改里边的测试方法并且查看有哪些特殊情况需要处理。Task1Get方法使用一个cur节点指向当前正在查找的节点,index指向当前当前正在查找的字符,在children_中查找key[......
  • 洛谷题单指南-暴力枚举-P1217 [USACO1.5] 回文质数 Prime Palindromes
    原题链接:https://www.luogu.com.cn/problem/P1217题意解读:本题要找[a,b]范围内的所有回文质数,千万不要被题目提示所干扰,如果按照提示先产生各个长度的回文数,再依次判断是否是素数,程序写起来比较繁琐,需要根据a、b的长度,写8个判断是否产生1~8位回文数,最后做素数判断。换一个思路......
  • C Primer Plus 中文第6版 10.13 第11题
    题目:编写一个程序,声明一个int类型的3*5二维数组,并用合适的值初始化它。该程序打印数组中的值,然后各值翻倍(即是原来的2倍),并显示出各个元素的新值。编写一个函数显示数组的内容,再编写一个函数把各元素的翻倍。这两个函数都以函数名和行数作为参数。分析:写2个函数即可。翻倍函数,用于使......
  • 《C++ Primer Plus》(第六版)中文版——思维导图+附录PDF+源代码
    说明,以下文件可在异步社区免费下载不同之处在于原附录PDF文件没有书签,而本文分享的附录文件带有书签本文所有文件下载链接:https://www.123pan.com/s/lO3uVv-uaEKv.html思维导图(图片)以下仅为预览,高清图片可从文章开头下载链接中下载另外后续本人有空会制作XMind脑图版本,会添加......
  • 还是我们著名的黑券商DOOPrime德璞!让我们看看今天DOOPrime德璞又有什么黑料
    大量客诉!上法制新闻!DOOPrime德璞你可真离谱!是的没错,今天神探要曝光的券商还是DOOPrime德璞!相信通过前面两篇文章,各位投资人已经了解到DOOPrime德璞打擦边球,将已过期的监管牌照拿出来继续宣传这件事!(详情请点击主页查看前两篇文章~)而DOOPrime德璞官方看到了神探的两篇推文,企图通过投......
  • 状压+BFS
    洛谷2622思路定义一个结构体节点,分别存储状态和步骤,状态的某一位是1表示灯开着,是0则表示该灯关,当状态为0000时输出的步骤即为最小步骤。点击查看代码#include<bits/stdc++.h>usingnamespacestd;//#defineintlonglong#definelllonglonginta[120][102]={0};int......
  • leetcode--98. 验证二叉搜索树(bfs)
    记录13:502024-1-28https://leetcode.cn/problems/validate-binary-search-tree/想岔方向了,想的太复杂了。首先思路是每个root节点必须大于左子树的最大节点,小于右边子树的最小节点。我的做法是记录下叶子节点,因为左边叶子节点的集合(vector)的最后一个节点为左子树的最大值......
  • C. Non-coprime Split
    首先,在这道题中,我们首先要把区间内的数字分为两类,包含偶数的区间和不包含偶数的区间。1、包含偶数的区间,我们中需要令a=2,b=i-2。即可符合题意。2、不包含偶数的区间,即只有一个奇数。那么我们要再次分类讨论,若该奇数为质数,贼输出-1;否则拆出它的两个因子(相乘为i)进行化简即可。主......
  • POJ2627 数独 (dfs or bfs)
    POJ2627数独(dfsorbfs)给出一个数独,空白用0表示,输出一个合理答案即可;SampleInput1103000509002109400000704000300502006060000050700803004000401000009205800804000107SampleOutput1436285795721394689867542313915427864689173527258639142374816956......
  • cprimerplus代码相关汇总
    第一章初识C语言重点内容起源:1972,贝尔实验室。继承B语言。特点:功能强大,应用范围广泛。设计步骤:1.定义程序目标2.设计程序3.编写代码4.编译5.运行程序6.测试和调试程序7.维护和修改程序本章小结C是强大而简洁的编程语言。它之所以流行,在于自身提供大量的实用编程工具,能很好......