Nguồn đề bài: http://www.spoj.com/PTIT/problems/P145PROE/
1. Đề bài P145PROE spoj
Tí và Tèo đang cùng nhau vẽ tranh. 2 bạn cần trang trí các họa tiết để làm nổi bật dòng chữ trung tâm. Cách trang trí cho mỗi chữ cái của Tí như sau:
..#..
.#.#.
#.X.#
.#.#.
..#..
Trong đó X là chữ cái đang trang trí. Còn cách trang trí của Tèo như sau:
..*..
.*.*.
*.X.*
.*.*.
..*..
Hai bạn đang tranh luận xem phân chia trang trí như thế nào. Cuối cùng, Tí là người chiến thắng, và quyết định cứ trang trí 2 chữ cái theo cách của Tí xong thì Tèo mới được trang trí cho chữ cái tiếp theo. Các khung trang trí chữ cái được nối tiếp nhau, chi tiết nào mà khung trang trí của Tí và Tèo giao nhau thì Tèo là người được ưu tiên trong trường hợp này.
Input
Một dòng duy nhất chứa xâu có độ dài <= 15 là nội dung trung tâm của bức tranh.
Output
In ra 5 dòng là bức tranh sau khi đã được 2 bạn trang trí xong.
Example
Test 1:
Input:
A
Output:
..#..
.#.#.
#.A.#
.#.#.
..#..
Test 2:
Input:
DOG
Output:
..#…#…*..
.#.#.#.#.*.*.
#.D.#.O.*.G.*
.#.#.#.#.*.*.
..#…#…*..
Test 3:
Input:
ABCD
Output:
..#…#…*…#..
.#.#.#.#.*.*.#.#.
#.A.#.B.*.C.*.D.#
.#.#.#.#.*.*.#.#.
..#…#…*…#..
2. Code tham khảo P145PROE spoj PTIT
{ kieu 1 kieu 2 kieu 3 ..#. ..#. ..*.. .#.. .#.# .#.# .*.*. #.#. #.A. #.B. *.C.* .D.# .#.# .#.# .*.*. #.#. ..#. ..#. ..*.. .#.. } const fi=''; nmax=15; type data=longint; var f:text; B:string; n,j,i:data; Kieu1,Kieu2,Kieu3:array[1..5] of string; S:array[1..5] of ansistring; begin assign(f,fi); reset(f); readln(f,b); n:=length(b); close(f); kieu1[1]:='..#.'; kieu1[2]:='.#.#'; kieu1[3]:='#.A.'; kieu1[4]:='.#.#'; kieu1[5]:='..#.'; kieu2[1]:='..*..'; kieu2[2]:='.*.*.'; kieu2[3]:='*.B.*'; kieu2[4]:='.*.*.'; kieu2[5]:='..*..'; kieu3[1]:='.#.'; kieu3[2]:='#.#'; kieu3[3]:='.D.'; kieu3[4]:='#.#'; kieu3[5]:='.#.'; kieu1[3][3]:=b[1]; for j:=1 to 5 do s[j]:=s[j]+kieu1[j]; for i:=2 to n do begin if i mod 3 = 0 then begin kieu2[3][3]:=b[i]; for j:=1 to 5 do S[j]:=s[j]+kieu2[j]; end else if ((i-1) mod 3 = 0) then begin kieu3[3][2]:=b[i]; for j:=1 to 5 do s[j]:=s[j]+kieu3[j]; end else begin kieu1[3][3]:=b[i]; for j:=1 to 5 do s[j]:=s[j]+kieu1[j]; end; end; if n mod 3 <>0 then begin s[1]:=s[1]+'.'; s[2]:=s[2]+'.'; s[3]:=s[3]+'#'; s[4]:=s[4]+'.'; s[5]:=s[5]+'.'; end; for i:=1 to 5 do writeln(s[i]); end.