2025-10-22 学习日记

发布于 2025-10-22 12:00 496 字 3 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
今日学习记录 1. 3126 -- Prime Path 关键词: 问题分析: 找到两个最接近的素数路径 核心思路: 预处理素数,只要标记,不要素数的值,就使用简单点的埃式筛 剩下 bfs 找到最短路径就行 对数字进行逐位的检查,检查每个数的可能性,就行了 *最终代码:

今日学习记录

1. 3126 — Prime Path

关键词:埃式筛 bfs 问题分析: 找到两个最接近的素数路径

核心思路: 预处理素数,只要标记,不要素数的值,就使用简单点的埃式筛 剩下 bfs 找到最短路径就行 对数字进行逐位的检查,检查每个数的可能性,就行了

**最终代码:

	#include <iostream>
	
	#include <cstdlib>
	
	#include <vector>
	
	#include<algorithm>
	
	#include <cmath>
	
	#include <fstream>
	
	#include<cstring>
	
	#include<climits>
	
	#include<queue>
	
	using namespace std;
	
	const int N = 10000;
	
	bool isprime[N];
	
	bool vis[N];
	
	int T,a,b;
	
	void init(){
	
	    isprime[0] = isprime[1] = false;
	
	    for(int i = 2;i<N;i++){
	
	        if(isprime[i]){
	
	            for(long long j = 1LL*i*i;j<N;j+=i){
	
	                isprime[j] = false;
	
	            }
	
	        }
	
	    }
	
	}
	
	int bfs(){
	
	    memset(vis, false, sizeof(vis));
	
	    queue<int> q;
	
	    q.push(a);
	
	    int cnt = 0;
	
	    vis[a] = true;
	
	    while(!q.empty()){
	
	        int size = q.size();
	
	        for(int t = 0;t<size;t++){
	
	            int num = q.front();q.pop();
	
	            //cout<<num<<endl;
	
	            int temp = num;
	
	            if(num==b) return cnt;
	
	            int p = 1;
	
	            for(int i = 1;i<=4;i++){
	
	                int m = temp%10;temp /= 10;
	
	                int num1 = num-p*m;
	
	                for(int j = 0;j<=9;j++){
	
	                    int prime = num1+p*j;
	
	                    if(prime>=1000&&isprime[prime]&&!vis[prime]){
	
	                        q.push(prime);
	
	                        vis[prime] = true;
	
	                    }
	
	                }
	
	                p *= 10;
	
	            }
	
	        }
	
	        cnt++;
	
	    }
	
	    return -1;
	
	}
	
	int main() {
	
	    memset(isprime, true, sizeof(isprime));
	
	    init();
	
	    cin>>T;
	
	    while(T--){
	
	        cin>>a>>b;
	
	        int ans = bfs();
	
	        if(ans==-1) cout<<"Impossible"<<endl;
	
	        else cout<<ans<<endl;
	
	    }
	
	    return 0;
	
	}

学到的点:

  1. 复习

执笔 手写

随机文章

加载中...