蒟蒻求助
查看原帖
蒟蒻求助
970659
woshidabian楼主2023/12/30 21:54

思路很直球,相似的部分复制粘贴5分钟写完,结果80pts #1写炸了(悲 求调

#include <iostream>
#include <queue>
#include <string>
#include <map>
#include <cmath>
using namespace std;

typedef long long ll;

struct node {
    string s;
    ll sum;
};

queue<node> Q;

map<string, int> M;

string st = "12345";

ll S, flag;

int check() {
    S = (st[0] - '0') * 10000 + 
        (st[1] - '0') * 1000 + 
        (st[2] - '0') * 100 + 
        (st[3] - '0') * 10 + 
        (st[4] - '0') * 1;
    flag = 1;
    for (int i = 2; i <= sqrt(S); i++) {
        if (S % i == 0) {
            flag = 0;
        }
    }
    return flag;
}

int main() {
    string s;
    cin >> s;
    st = s;
    if (check()) {
        cout << s;
        return 0;
    }
    Q.push((node){s, 0});
    ll t1;
    while (Q.size()) {
        t1 = Q.front().sum;
        s = Q.front().s;
        st = s;
        if (st[0] != '9') {
            st[0] = st[0] + 1;
        } else {
            st[0] = '0';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[1] != '9') {
            st[1] = st[1] + 1;
        } else {
            st[1] = '0';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[2] != '9') {
            st[2] = st[2] + 1;
        } else {
            st[2] = '0';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[3] != '9') {
            st[3] = st[3] + 1;
        } else {
            st[3] = '0';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[4] != '9') {
            st[4] = st[4] + 1;
        } else {
            st[4] = '0';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[4] != '0') {
            st[4] = st[4] - 1;
        } else {
            st[4] = '9';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[3] != '0') {
            st[3] = st[3] - 1;
        } else {
            st[3] = '9';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[2] != '0') {
            st[2] = st[2] - 1;
        } else {
            st[2] = '9';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[1] != '0') {
            st[1] = st[1] - 1;
        } else {
            st[1] = '9';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        st = s;
        if (st[0] != '0') {
            st[0] = st[0] - 1;
        } else {
            st[0] = '9';
        }
        if (!M[st]) {
            M[st] = 1;
            if (check()) {
                cout << st;
                return 0;
            }
            Q.push((node){st, t1 + 1});
        }
        Q.pop();
    }
    return 0;
}
2023/12/30 21:54
加载中...