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 |
一次AC 甚爽 贴代码#include<iostream> #include<string.h> using namespace std; bool prime[10000]; bool isUse[10000]; char num1[5],num2[5]; int a,b; int ans; struct State { char num[5]; }; State qu[1229]; int qs,qt,qly; void init(void) { int i,j; memset(prime,true,sizeof(prime)); prime[1]=false; for(i=2; i<100; i++) { if(prime[i]) { for(j=2*i; j<10000; j+=i) { prime[j]=false; } } } } void BFS(void) { int i,j; int convert_num; char temp_num[5]; char temp_ch; strcpy(qu[0].num,num1); qs=0; qt=1; qly=qt-1; while(qs<qt) { if(qs>qly) { ans++; qly=qt-1; } strcpy(temp_num,qu[qs].num); for(i=0;i<4;i++) { temp_ch=temp_num[i]; for(j=0;j<10;j++) { if(temp_num[i]==j+'0') continue; temp_num[i]=j+'0'; if(temp_num[0]=='0') continue; if((temp_num[3]-'0')%2==0) continue; if(strcmp(temp_num,num2)==0) { ans++; return; } convert_num=temp_num[3]-'0'+(temp_num[2]-'0')*10+(temp_num[1]-'0')*100+(temp_num[0]-'0')*1000; if(isUse[convert_num]==false && prime[convert_num]==true) { isUse[convert_num]=true; strcpy(qu[qt].num,temp_num); qt++; } } temp_num[i]=temp_ch; } qs++; } } int main(void) { int test_num; int i; cin>>test_num; init(); while(test_num--) { cin>>num1>>num2; ans=0; if(strcmp(num1,num2)!=0) { memset(isUse,false,sizeof(isUse)); BFS(); } cout<<ans<<endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator