#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;
}
POJ 1676
最新推荐文章于 2020-07-15 17:33:08 发布