CCF模拟题 202309-2 坐标变换(其二)

问题描述
试题编号: 202309-2
试题名称: 坐标变换(其二)
时间限制: 1.0s
内存限制: 512.0MB

问题描述:
对于平面直角坐标系上的坐标 (x,y),小 P 定义了如下两种操作:
1、拉伸 k 倍:横坐标 x 变为 kx,纵坐标 y 变为 ky;
2、旋转 Θ:将坐标 (x,y) 绕坐标原点 (0,0) 逆时针旋转 Θ 弧度(0<=Θ<=2π)。
易知旋转后的横坐标为 xcosΘ-ysinΘ,纵坐标为 xsinΘ+ycosΘ。

设定好了包含 n 个操作的序列 (t1,t2,…,tn) 后,小 P 又定义了如下查询:
i j x y:坐标 (x,y) 经过操作 ti,…,tj(1<=i<=j<=n)后的新坐标。
对于给定的操作序列,试计算 m 个查询的结果。

输入格式
从标准输入读入数据。
输入共 n+m+1 行。
输入的第一行包含空格分隔的两个正整数 n 和m ,分别表示操作和查询个数。
接下来 n 行依次输入 n 个操作,每行包含空格分隔的一个整数(操作类型)和一个实数(k 或 Θ),形如 1 k(1代表拉伸,表示拉伸 k 倍)或 2 Θ(2代表旋转,表示旋转 Θ)。
接下来 m 行依次输入 m 个查询,每行包含空格分隔的四个整数i 、j、x和y,含义如前文所述。

输出格式
输出到标准输出中。
输出共 m 行,每行包含空格分隔的两个实数,表示对应查询的结果。

样例输入

10 5
2 0.59
2 4.956
1 0.997
1 1.364
1 1.242
1 0.82
2 2.824
1 0.716
2 0.178
2 4.094
1 6 -953188 -946637
1 9 969538 848081
4 7 -114758 522223
1 9 -535079 601597
8 8 159430 -511187

样例输出

-1858706.758 -83259.993
-1261428.46 201113.678
-75099.123 -738950.159
-119179.897 -789457.532
114151.88 -366009.892

CCF模拟题 202309-2 坐标变换(其二)_第1张图片

你可能感兴趣的:(CCF竞赛,算法,java,c++,c语言,python)