UVa 1605 - Building for UN

contents

  1. 1. Problem
  2. 2. Sample Input
  3. 3. Sample Output
  4. 4. Solution

Problem

現在有 N 個國家在一棟建築物裡面各自擁有辦公室,辦公室相鄰的定義為同一樓層的前後左右,或者是上一樓層的同一位置、下一樓層的同一位置。

由於各方想要藉由一面牆或者是天花板進行秘密會議。因此希望每一個國家的辦公室可以跟其他所有辦公室相鄰。

輸出其中一組解即可。

Sample Input

1
2
4
8

Sample Output

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2 2 2
AB
CC
zz
zz
2 8 8
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
eeeeeeee
ffffffff
gggggggg
hhhhhhhh
abcdefgh
abcdefgh
abcdefgh
abcdefgh
abcdefgh
abcdefgh
abcdefgh
abcdefgh

Solution

直接建造兩層,參照如上圖的建造方式,交錯的形式能保證可以在 O(2 n^2) 個數內完成建築物。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
// ignore Print a blank line between test cases.
int main() {
int n, cases = 0;
while (scanf("%d", &n) == 1) {
printf("%d %d %d\n", 2, n, n);
for (int i = 0; i < n; i++, puts(""))
for (int j = 0; j < n; j++)
putchar(i < 26 ? i + 'a' : i-26 + 'A');
puts("");
for (int i = 0; i < n; i++, puts(""))
for (int j = 0; j < n; j++)
putchar(j < 26 ? j + 'a' : j-26 + 'A');
puts("");
}
return 0;
}