Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:g++ tle, c++ac球原因In Reply To:g++ tle, c++ac球原因 Posted by:Alextokc at 2017-05-18 12:45:06 > 代码: > #include <iostream> > #include <cmath> > #include <cstdlib> > #include <cstring> > #include <algorithm> > #include <vector> > #include <string> > #include <deque> > #include <queue> > #include <utility> > #include <iterator> > > using namespace std; > const int Maxn = 10005; > int T; > bool isprime[Maxn]; > bool vis[Maxn]; > typedef pair < string, int> node; > > string a, b; > > inline void prime_sieve(int n) { > memset(isprime, 1, sizeof isprime); > int i, j; > isprime[0] = 0, isprime[1] = 0; > for (i = 2; i <= n; ++i) { > if (isprime[i]) > for (j = i + i; j <= n; j += i) > isprime[j] = 0; > } > } > > inline int strtonum(string x) { > int num = 0, i; > if (x[0] == '-') { > for (i = 1; i < x.length(); ++i) > num = num * 10 + (x[i] - '0'); > return -num; > } > for (i = 0; i < x.length(); ++i) > num = num * 10 + (x[i] - '0'); > return num; > } > > inline bool check(int num) { > if (num == strtonum(b)|| (num & 1 && isprime[num] && vis[num] == 0 && num >= 0 && num <= 9999)) > return true; > return false; > } > > inline int bfs() { > > queue < node > Q; > node x; > x.first = a, x.second = 0; > Q.push(x); > vis[strtonum(x.first)] = 1; > > int i, j, numberx; > node next; > while (!Q.empty()) { > x = Q.front(); Q.pop(); > if (x.first == b) return x.second; > for (i = 0; i < 4; ++i) { > if (i == 0) { > for (j = 1; j <= 9; ++j) { > next = x; > next.first[0] = (j + '0'); > numberx = strtonum(next.first); > if (check(numberx)) { > vis[numberx] = 1; > next.second = x.second + 1; > Q.push(next); > } > } > } else if (i == 1) { > for (j = 0; j <= 9; ++j) { > next = x; > next.first[1] = (j + '0'); > numberx = strtonum(next.first); > if (check(numberx)) { > vis[numberx] = 1; > next.second = x.second + 1; > Q.push(next); > } > } > } else if (i == 2) { > for (j = 0; j <= 9; ++j) { > next = x; > next.first[2] = (j + '0'); > numberx = strtonum(next.first); > if (check(numberx)) { > vis[numberx] = 1; > next.second = x.second + 1; > Q.push(next); > } > } > } else if (i == 3) { > for (j = 1; j <= 9; j += 2) { > next = x; > next.first[3] = (j + '0'); > numberx = strtonum(next.first); > if (check(numberx)) { > vis[numberx] = 1; > next.second = x.second + 1; > Q.push(next); > } > } > } > } > } > return -1; > } > > int main() { > ios::sync_with_stdio(false); > prime_sieve(Maxn); > cin >> T; > while (T--) { > memset(vis, 0, sizeof vis); > cin >> a >> b; > int X; > X = bfs(); > if (X == -1) cout << "Impossible" << endl; > else cout << X << endl; > } > return 0; > } > 诡异啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator