CSP202309-2 坐标变换(二)
#include<iostream>
#include<cmath>
using namespace std;
struct opera{
int id;
double k;
}a[100010];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%d%lf",&a[i].id,&a[i].k);
}
while(m--){
int start,end;
double x,y;
scanf("%d%d%lf%lf",&start,&end,&x,&y);
for(int i=start;i<=end;i++){
if(a[i].id==1){
x*=a[i].k;
y*=a[i].k;
} else {
double t=x;
double cs=cos(a[i].k),sn=sin(a[i].k);
x=t*cs-y*sn;
y=t*sn+y*cs;
}
}
printf("%.3f %.3f\n",x,y);
}
}