#include<stdio.h> #include<string.h> int main() { int t; scanf("%d",&t); while(t--) { getchar(); int a1[100],a2[100],a3[101],a4[101],a5[101],a6[101],a7[101],a8[100]; //8个数组分别存8个不完整LED数字可能的数字。 int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0,cnt6=0,cnt7=0,cnt8=0; //八个数字的上限; int vis[10];//储存那些不完整LED的数字一定不可能的数字 char str[4][30]; for(int i=0; i<3; i++) gets(str[i]); memset(vis,0,sizeof(vis)); //举第一个for循环当列子 for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { if(str[i][j]=='|') { int y=j-0; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++;//如果在这个出现'|'那么这个LED数字就不可能是1、2、3、7了 } else if(y==2) { vis[5]++,vis[6]++;//如果在这个出现'|'那么这个LED数字就不可能是5,6了 } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++;//如果在这个出现'|'那么这个LED数字就不可能是1,3,4,5,7,9了; } else if(y==2) { vis[2]++;//如果在这个出现'|'那么这个LED数字就不可能是2了 } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++;//如果在这个出现'_'那么这个LED数字就不可能是1,4了 } else if(i==1) { vis[0]++,vis[1]++,vis[7]++;//如果在这个出现'_'那么这个LED数字就不可能是0,1,7了 } else if(i==2) { vis[1]++,vis[4]++,vis[7]++;//如果在这个出现'_'那么这个LED数字就不可能是1,4,7了 } } } } for(int i=0; i<10; i++) if(vis[i]==0) a1[cnt1++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=3; j<6; j++) { if(str[i][j]=='|') { int y=j-3; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a2[cnt2++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=6; j<9; j++) { if(str[i][j]=='|') { int y=j-6; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a3[cnt3++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=9; j<12; j++) { if(str[i][j]=='|') { int y=j-9; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a4[cnt4++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=13; j<16; j++) { if(str[i][j]=='|') { int y=j-13; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a5[cnt5++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=16; j<19; j++) { if(str[i][j]=='|') { int y=j-16; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a6[cnt6++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=19; j<22; j++) { if(str[i][j]=='|') { int y=j-19; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a7[cnt7++]=i; memset(vis,0,sizeof(vis)); for(int i=0; i<3; i++) { for(int j=22; j<25; j++) { if(str[i][j]=='|') { int y=j-22; if(i==1) { if(y==0) { vis[1]++,vis[2]++,vis[3]++,vis[7]++; } else if(y==2) { vis[5]++,vis[6]++; } } else if(i==2) { if(y==0) { vis[1]++,vis[3]++,vis[4]++,vis[5]++; vis[7]++,vis[9]++; } else if(y==2) { vis[2]++; } } } else if(str[i][j]=='_') { if(i==0) { vis[1]++,vis[4]++; } else if(i==1) { vis[0]++,vis[1]++,vis[7]++; } else if(i==2) { vis[1]++,vis[4]++,vis[7]++; } } } } for(int i=0; i<10; i++) if(vis[i]==0) a8[cnt8++]=i; int kj1[10101],cc1=0,kj2[10101],cc2=0; //kj1[]存前四个数字的所有组合,kj2[]存后面所有四个数字的组合; for(int i=0; i<cnt1; i++) { for(int j=0; j<cnt2; j++) { for(int k=0; k<cnt3; k++) { for(int p=0; p<cnt4; p++) { int sum; if(a1[i]*10+a2[j]>23)//时间是00:00-23:59 continue; if(a3[k]*10+a4[p]>=60)//时间是00:00-23:59 continue; sum=a1[i]*1000+a2[j]*100+a3[k]*10+a4[p]; if(sum<=2359) kj1[cc1++]=sum; } } } } for(int i=0; i<cnt5; i++) { for(int j=0; j<cnt6; j++) { for(int k=0; k<cnt7; k++) { for(int p=0; p<cnt8; p++) { int sum; if(a5[i]*10+a6[j]>23)//时间是00:00-23:59 continue; if(a7[k]*10+a8[p]>=60)//时间是00:00-23:59 continue; sum=a5[i]*1000+a6[j]*100+a7[k]*10+a8[p]; if(sum<=2359) kj2[cc2++]=sum; } } } } int jisu=0,kj; for(int i=0; i<cc1; i++) { for(int j=0; j<cc2; j++) { if(kj1[i]<15) { if(kj2[j]+15==2360+kj1[i])//考虑00:00点到23:45这种情况 { jisu++; kj=kj1[i]; } } else { if(kj1[i]==kj2[j]+15) { jisu++; kj=kj1[i]; continue; } int x1=kj1[i]/100; int x2=kj2[j]/100; if(x2+1==x1) { int x3=kj1[i]%100; int x4=kj2[j]%100; if(x3+60==x4+15) { jisu++; kj=kj1[i]; } } } } } if(jisu==1)//如果可能的情况不是1或者为0都是不正确的。 { int AC[10]; int aaa=0; memset(AC,0,sizeof(AC));//一定要清空数组,因为这个WA了。 while(kj>0) { AC[aaa++]=kj%10; kj/=10; } for(int i=3; i>=0; i--) printf("%d",AC[i]); puts(""); } else puts("Not Sure"); } return 0; }