F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

多层血条

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
Total Submission(s): 488    Accepted Submission(s): 250


Problem Description
在本题中你将帮助比特公司的新游戏《超维攻坚》实现BOSS战的多层血条功能。血条由 $n$ 行 $m$ 列个像素构成,外围还有一圈 $1$ 像素厚的边框,样式请参照样例。

假设BOSS有 $k$ 条血,则血条由 $k+1$ 个图层自底向上叠加而成。底层是 $n$ 行 $m$ 列个空格,上面的 $k$ 层自底向上依次表示第 $1,2,\dots,k$ 条血。每条血都有 $n$ 行,每一列代表 $1$ 点生命值,因此一共有 $k=\lceil\frac{hp}{m}\rceil$ 条血。每条血都由单一字符构成,自底向上由字符 '$\texttt{A}$' 到 '$\texttt{E}$' 循环表示,例如:第一条血为 '$\texttt{A}$',第二条血为 '$\texttt{B}$',第五条血为 '$\texttt{E}$',第六条血为 '$\texttt{A}$'。

除此之外,为了加强击打反馈,假设BOSS有 $hp$ 点生命值,玩家当前的攻击对BOSS造成了 $dmg$ 点伤害,那么第 $hp-dmg+1$ 至第 $hp$ 点生命值代表的像素将被替换成字符 '$\texttt{.}$'。

给定 $n,m,hp,dmg$,请绘制出对应的多层血条。
 

Input
第一行包含一个正整数 $T$ ($1\leq T\leq 50$),表示测试数据的组数。

每组数据包含一行四个整数 $n,m,hp,dmg$ ($1\leq n\leq 50$, $5\leq m\leq 800$, $1\leq hp\leq 10^9$, $0\leq dmg < hp $),分别表示血条的尺寸、BOSS的生命值以及当前受到的伤害。
 

Output
对于每组数据输出 $n+2$ 行,每列 $m+2$ 个字符,即对应的多层血条。
 

Sample Input
5 2 5 4 2 1 10 49 1 1 10 52 0 1 10 52 5 1 10 52 50
 

Sample Output
+-----+ |AA.. | |AA.. | +-----+ +----------+ |EEEEEEEE.D| +----------+ +----------+ |AAEEEEEEEE| +----------+ +----------+ |..EEEEE...| +----------+ +----------+ |..........| +----------+
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-11-22 10:22:06, Gzip enabled