| ||||||||||
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 |
1A 0MS水过#include <iostream> #include <queue> using namespace std; bool ifPrime[10000]; bool ifVisit[10000]; int pathCount[10000]; int main() { for ( int i = 0 ; i < 10000 ; i ++ ) ifPrime[i] = true; ifPrime[0] = false; ifPrime[1] = false; for ( int i = 2 ; i < 100 ; i ++ ) { if ( ifPrime[i] ) for ( int j = 1 ; i*j < 10000 ; j ++ ) ifPrime[i*j] = false; } int number; cin>>number; int num1, num2; for ( int i = 0 ; i < number ; i ++ ) { cin>>num1>>num2; queue<int> q; for ( int j = 1000 ; j < 10000 ; j ++ ) { ifVisit[j] = false; pathCount[j] = 0; } q.push(num1); ifVisit[num1] = true; while ( !q.empty() ) { int tempInt = q.front(); q.pop(); if ( tempInt == num2 ) { break; } for ( int t = 1 ; t <= 1000 ; t *= 10 ) { int di = tempInt; di /= t; di %= 10; int w = tempInt - di*t; for ( int j = 0 ; j < 10 ; j ++ ) { if ( t == 1000 && j == 0 ) continue; if ( j != di ) { int nowNum = j*t + w; if ( ifPrime[nowNum] && !ifVisit[nowNum] ) { q.push(nowNum); pathCount[nowNum] = pathCount[tempInt] +1; ifVisit[nowNum] = true; } } } } } cout<<pathCount[num2]<<endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator