HZNUOJ

画图

Tags:
Time Limit:  2 s      Memory Limit:   256 MB
Submission:91     AC:20     Score:99.26

Description

大家应该做过不少的画图的题目吧。

但这些题目大多都是固定的形状,你只需要进行缩放即可。

但你有没有想过,如果形状不固定,你要怎么办?


现在给你一块n*n的方形画布,并给你几条直线(为了简化题目,斜率只可能为0、1、-1或者不存在),和其对应的自变量的取值范围。

请你画出相应图像,并按要求进行缩放。

Input

第一行是一个整数T(0<T<=10)表示有T组数据。

对于每组数据:

第一行两个整数n,m(0<n<10, 0<m<100),n表示画布大小,m表示直线数。

接下来m行,每行三整数t,c,a,b(t∈{0,1,-1,2}, |c|<=1000, |a|<=1000, |b|<=1000)

其中t表示直线类型,c表示解析式里的常数,0,1,-1分别表示斜率为0,1,-1的直线(解析式为y=tx+c),2表示斜率不存在的直线(解析式 为x=c)。

若t为2,后面的a,b表示y坐标的取值范围,即y∈[a,b],否则表示x的取值范围,即x∈[a,b]

坐标系的原点在左上角,x向下增大,y向右增大,x和y都从0开始计数。

接下来是一个整数q(0<=q<=100),表示q次缩放。

最后是q行,每行一个整数z(0<z<=10),表示缩放倍数。

Output

对于每组数据,首先输出原始图像。

然后对于q次缩放,分别输出缩放后的图像,图像统一用符号*填充,空白的地方用空格填充。注意就算是全空的图像,你也得输出相应数目的空格。

Samples

input
1 5 5 0 0 0 4 0 4 0 4 2 0 0 4 2 4 0 4 0 2 2 2 1 2
output
***** * * * * * * * ***** ********** ********** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ********** **********
input
4 9 7 0 2 2 6 0 6 2 6 2 4 2 6 0 0 0 8 0 8 0 8 2 0 0 8 2 8 0 8 0 9 7 2 2 2 6 2 6 2 6 -1 8 2 6 0 0 0 8 0 8 0 8 2 0 0 8 2 8 0 8 0 9 7 0 2 2 6 0 6 2 6 1 0 2 6 0 0 0 8 0 8 0 8 2 0 0 8 2 8 0 8 0 9 7 0 2 2 6 0 6 2 6 2 6 2 6 0 0 0 8 0 8 0 8 2 0 0 8 2 8 0 8 0
output
********* * * * * * * * * * * * ***** * * * * * * * * * * * ********* ********* * * * ***** * * * * * * * * * * * ***** * * * ********* ********* * * * * * * * ** * * * * * * * * * ** * * * * * * * ********* ********* * * * * * * * * * * * * * * * * * * * ***** * * * *********

Hint

标程就50行,别想太复杂。

Author

WEI, Lixin

Source

【备用】