zoukankan      html  css  js  c++  java
  • Prime Path

    原题链接

    题解

    题目的意思是给你两个素数a,b,问你每次只能改变一个数字a-->b的素数路径最小是多少。先利用素数筛把素数10000以内的素数选出来,方便计算。然后直接利用BFS枚举所有的情况。

    代码如下

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    const int N = 10010;
    int judge[N] = {1, 1};
    int prime[N];
    int numprime = 0;
    int st[N];
    
    void init(){
        for(int i = 2; i < N; ++ i){
            if(judge[i] == 0) prime[numprime ++] = i;
            for(int j = 0; j < numprime && i * prime[j] < N; ++ j){
                judge[i * prime[j]] = 1;
                if(i % prime[j] == 0) break;
            }
        }
    }
    
    int changed(int num, int op, int temp){
        int ans = 0;
        if(op == 0) ans = num % 1000 + temp * 1000;
        else if(op == 1) ans = num / 1000 * 1000 + num % 100 + temp * 100;
        else if(op == 2) ans = num / 100 * 100 + temp * 10 + num % 10;
        else ans = num / 10 * 10 + temp;  
    
        return ans;
    }
    
    int main(){
        init();
        int T; cin >> T;
        while(T --){
            memset(st, -1, sizeof st);
            int n, m; cin >> n >> m;
            queue<int> q; q.push(n);
            st[n] = 0;
            int res = -1;
            while(q.size()){
                int t = q.front(); q.pop();
                if(t == m) {res = st[t]; break;}
                for(int i = 0; i < 4; ++ i){
                    for(int j = 0; j <= 9; ++ j){
                        if(i == 0 && j == 0) continue;
                        int temp = changed(t, i, j);
                        if(st[temp] == -1 && judge[temp] == 0) q.push(temp), st[temp] = st[t] + 1;
                    }
                }
            }
    
            if(res == -1) cout << "Impossible" << '
    ';
            else cout << res << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    hdu5616 暴力枚举
    codeforce 35C fire again
    常用代码及经验总结(不断更新)
    codeforce AIM tech Round 4 div 2 B rectangles
    codeforce diversity
    codeforce 589B枚举
    codeforces 1A
    自学Java测试代码
    自学Jav测试代码三 Math类 & Date & GregorianCalendar类
    数学类与图形类
  • 原文地址:https://www.cnblogs.com/Lngstart/p/13473719.html
Copyright © 2011-2022 走看看