| ||||||||||
| 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 | |||||||||
大牛请看代码,为什么WA#include<iostream>
#include<fstream>
#include<queue>
#include<cmath>
using namespace std;
int a[9999];
bool is_prime(int a)
{
double b = a;
for(int i=2; i<sqrt(b); i++)
{
if(a%i==0)
{
return false;
}
}
return true;
}
bool solve(char *s, char *e)
{
queue<char *> q;
q.push(s);
int si = (s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');//atoi(s);
int ei = (e[0]-'0')*1000+(e[1]-'0')*100+(e[2]-'0')*10+(e[3]-'0');//atoi(e);
while(!q.empty())
{
char *f = q.front();
q.pop();
int fi = (f[0]-'0')*1000+(f[1]-'0')*100+(f[2]-'0')*10+(f[3]-'0');//atoi(f);
char t[5];
strcpy(t, f);
int i = 0;
for(; i<4; i++)
{
int j=0;
for(; j<10; j++)
{
if(j==f[i]-'0' || (j==0 && i==0))
{
continue;
}
t[i] = j+'0';
int m = (t[0]-'0')*1000+(t[1]-'0')*100+(t[2]-'0')*10+(t[3]-'0');//atoi(t);
if(m == si)
{
continue;
}
if(m == ei && (a[ei]>a[fi]+1 || a[ei]==0))
{
a[ei]=a[fi]+1;
break;
}
else if(is_prime(m) && ((a[m]==0||a[m]>a[fi]+1) && (a[ei]==0||a[ei]>a[fi]+1)))
{
char *tmp = new char[5];
strcpy(tmp, t);
q.push(tmp);
a[m] = a[fi]+1;
}
}
if(j<10)
{
break;
}
t[i] = f[i];
}
delete f;
}
return false;
}
int main()
{
int c=0;
/*fstream in;
in.open("test.txt");*/
cin>>c;//
int i=0;
for(; i<c; i++)
{
char *s = new char[5];
char *e = new char[5];
cin>>s>>e;//
if(strcmp(s, e)==0)
{
cout<<0<<endl;
continue;
}
memset(a, 0, sizeof(int)*10000);//memset(a, 0, sizeof(int)*9999);
solve(s,e);
int ei = (e[0]-'0')*1000+(e[1]-'0')*100+(e[2]-'0')*10+(e[3]-'0');//atoi(e);
if(a[ei]>0)
cout<<a[ei]<<endl;
else
cout<<"Impossible"<<endl;
//delete s;
delete e;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator