#P2383. Circle Drawing
Circle Drawing
题目描述
图形库通常会实现图形基本元素的绘制,比如直线、多边形和圆形。你的任务是编写一个绘制圆形的程序。
图形画布用一个大小为 Xsize * Ysize 的像素数组来表示。每个像素的颜色范围是从 (0) 到 (9)。初始时,所有像素的颜色都是 (0)。像素被看作是边长为 (1) 的小正方形。一个圆心为 ((x_c, y_c)) 且半径为 (R) 的圆是由满足不等式(x − xc)2 + (y − yc)2 ≤ R2 的像素 ((x, y)) 组成的集合。
为了绘制一个圆,你的程序应该将上述集合中所有像素的颜色设置为该圆的颜色。在绘制完 (N) 个给定的圆之后,程序应该输出画布上所有像素的颜色。
输入
输入包含数字Xsize, Ysize ,N,接着是 N 组数字 xi,yi,Ri,ci,这些数字描述了第 (i) 个圆的圆心坐标、半径和颜色。
(1 ≤ Xsize, Ysize ≤ 1000),(1 ≤ N ≤ 10000),(0 ≤ x_i < Xsize),(0 ≤ y_i < Ysize),(1 ≤ R_i ≤ 212),(0 ≤ c_i ≤ 9)。
输出
输出应该包含 Xsize 行,每行有 Ysize 个字符,其中第 (j) 行的第 (i) 个字符是一个数字,对应于像素 ((i, j)) 的颜色。
5 5 1
2 2 1 3
00000
00300
03330
00300
00000
####提示
这个问题有大量的输入和输出数据,使用 scanf()
和 printf()
而不是 cin
和 cout
来读取数据,以避免超出时间限制。
来源
2004 年东北欧,远东分区赛