Emag eht htiw Em Pleh
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2555 | Accepted: 1716 |
Description
This problem is a reverse case of the
problem 2996. You are given the output of the problem H and your task is to find the corresponding input.
Input
according to output of
problem 2996.
Output
according to input of
problem 2996.
Sample Input
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4 Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
Sample Output
+---+---+---+---+---+---+---+---+ |.r.|:::|.b.|:q:|.k.|:::|.n.|:r:| +---+---+---+---+---+---+---+---+ |:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.| +---+---+---+---+---+---+---+---+ |...|:::|.n.|:::|...|:::|...|:p:| +---+---+---+---+---+---+---+---+ |:::|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |...|:::|...|:::|.P.|:::|...|:::| +---+---+---+---+---+---+---+---+ |:P:|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |.P.|:::|.P.|:P:|...|:P:|.P.|:P:| +---+---+---+---+---+---+---+---+ |:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.| +---+---+---+---+---+---+---+---+
Source
上一个模拟题的逆过程
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
char tem[35];
char tem1[35]="+---+---+---+---+---+---+---+---+";
char tem2[35];
int a[20][35];
int p;
void chuli()
{
int i,j;
int bianhao;
for(i=0;i<strlen(tem);)
{
while(tem[i]==',')
i++;
if(tem[i]<91)
{
switch(tem[i])
{
case 'K':bianhao=1;break;
case 'Q':bianhao=2;break;
case 'R':bianhao=3;break;
case 'B':bianhao=4;break;
case 'N':bianhao=5;break;
default:break;
};
a[9-(tem[i+2]-'0')][tem[i+1]-'a'+1]=p+bianhao;
i+=3;
}
else
{
a[9-(tem[i+1]-'0')][tem[i]-'a'+1]=p+6;
i+=2;
}
}
}
void fuzhi(int hang)
{
int i,j;
if(hang%2)
strcpy(tem2,"|...|:::|...|:::|...|:::|...|:::|");
else
strcpy(tem2,"|:::|...|:::|...|:::|...|:::|...|");
for(i=1;i<=8;i++)
{
switch(a[hang][i])
{
case 1:
tem2[(i-1)*4+2]='K';
break;
case 2:
tem2[(i-1)*4+2]='Q';
break;
case 3:
tem2[(i-1)*4+2]='R';
break;
case 4:
tem2[(i-1)*4+2]='B';
break;
case 5:
tem2[(i-1)*4+2]='N';
break;
case 6:
tem2[(i-1)*4+2]='P';
break;
case 7:
tem2[(i-1)*4+2]='k';
break;
case 8:
tem2[(i-1)*4+2]='q';
break;
case 9:
tem2[(i-1)*4+2]='r';
break;
case 10:
tem2[(i-1)*4+2]='b';
break;
case 11:
tem2[(i-1)*4+2]='n';
break;
case 12:
tem2[(i-1)*4+2]='p';
break;
default:break;
};
}
}
void output()
{
int i,j;
for(i=1;i<=8;i++)
{
printf("%s\n",tem1);
fuzhi(i);
printf("%s\n",tem2);
}
printf("%s\n",tem1);
}
int main()
{
int i,j;
memset(a,0,sizeof(a));
scanf("%s",tem);
scanf("%s",tem);
p=0;
chuli();
scanf("%s",tem);
scanf("%s",tem);
p=6;
chuli();
output();
return 0;
}