2014
11-27

# The N cubes puzzle

Given n cubes 1*1*1 (x, y, z) and n types of pigments . You can choose any one of the n pigments to paint every face of these cubes as you want. To save space, we’d like you to stack these n cubes vertically into a 1*1*n cube. What’s more, to make it as much beautiful as possible, we demand you to find a painting way to make sure that all the vertical faces of the resulting cube are covered by n colors.
For example, such as n = 4, a cube’s expand map just as sample 1-1 ;and the stacked cube’s expand map just as sample 1-2;

The first line is an integer T (1<=T<=500) indicating the number of test cases.
Each test case begins with an integer n (1<=n<=10), which stands for the number of cubes. Then, the following 3 * n lines each contains a string which only consists of capital letters between ‘A’ and ‘A’ + n – 1 (colors of the pigments, 1<=n<=10). Pay attention, each cube occupies 3 lines describing its expanded map.

The first line is an integer T (1<=T<=500) indicating the number of test cases.
Each test case begins with an integer n (1<=n<=10), which stands for the number of cubes. Then, the following 3 * n lines each contains a string which only consists of capital letters between ‘A’ and ‘A’ + n – 1 (colors of the pigments, 1<=n<=10). Pay attention, each cube occupies 3 lines describing its expanded map.

3
2
A
BBAA
B
B
ABBA
A
3
A
ABAB
B
C
AACB
C
C
ABBC
C
4
A
A
A
D
C
C
B
CDAC
D

Case #1: Yes
Case #2: No
Case #3: Yes

1. 换句话说，A[k/2-1]不可能大于两数组合并之后的第k小值，所以我们可以将其抛弃。
应该是，不可能小于合并后的第K小值吧

2. #include <stdio.h>
int main()
{
int n,p,t[100]={1};
for(int i=1;i<100;i++)
t =i;
while(scanf("%d",&n)&&n!=0){
if(n==1)
printf("Printing order for 1 pages:nSheet 1, front: Blank, 1n");
else {
if(n%4) p=n/4+1;
else p=n/4;
int q=4*p;
printf("Printing order for %d pages:n",n);
for(int i=0;i<p;i++){
printf("Sheet %d, front: ",i+1);
if(q>n) {printf("Blank, %dn",t[2*i+1]);}
else {printf("%d, %dn",q,t[2*i+1]);}
q–;//打印表前
printf("Sheet %d, back : ",i+1);
if(q>n) {printf("%d, Blankn",t[2*i+2]);}
else {printf("%d, %dn",t[2*i+2],q);}
q–;//打印表后
}
}
}
return 0;
}