Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

3126已解决

Posted by zsc08_hyq at 2009-11-25 18:37:18
#include<iostream>
#include<math.h>
using namespace std;
struct lift
{
    int k,n;
}key[3000];
int N,B,i,j,x,k[9001],m,ii,jj,t;
int panduan(int x)
{
	int a=sqrt(double(x));
	for(jj=2;jj<=a&&x%jj!=0;jj++);
	if(jj>=a+1) return 1;
	else return 0;
}
int bfs()
{
	memset(k,0,sizeof(k));
	key[0].n=0;
	i=0;
	j=1;
	while(i<j)
	{
		for(ii=1;ii<1001;ii*=10)
		{
			t=(key[i].k/(ii*10))*(ii*10)+key[i].k%ii;
			if(ii!=1000) m=0;
			else m=1;
			for(;m<10;m++)
			{
				x=t+m*ii;
				if(x!=key[i].k&&panduan(x)) 
				{
					if(x==B) return key[i].n;
					if(x<10000&&!k[x-1000]) 
					{
						key[j].k=x;
						k[x-1000]=1;
						key[j++].n=key[i].n+1;
					}
				}
			}
		}
		i++;
	}
}
int main()
{
    scanf("%d",&N);
	while(N-->0&&N<101&&scanf("%d%d",&key[0].k,&B)!=EOF)
	{
		if(key[0].k==B) printf("0\n");
		else 	
		{
			if(key[0].k>B)
			{
				t=key[0].k;
				key[0].k=B;
				B=t;
			}
            printf("%d\n",bfs()+1);
		}
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator