CCF-CSP练习 坐标变换(其二)
CCF 202309-2 坐标变换(其二)
问题描述
输入格式
输出格式
样例输入
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
我的提交
#include<bits/stdc++.h>
using namespace std;
struct opand{
int ks;
double xx,xy;
double kos;//k or seita
}oa[1000005];
int main(){
int n,m,t,j;
cin>>n>>m;//操作和查询个数
for(t=1;t<n+1;t++)
{
cin>>oa[t].ks>>oa[t].kos;
}
int a,b;
double x,y,xx;
for(t=1;t<m+1;t++)
{
cin>>a>>b>>x>>y;
for(j=a;j<b+1;j++){
if(oa[j].ks==1){
x*=oa[j].kos;y*=oa[j].kos;
}
else if(oa[j].ks==2){
xx=x;
x=x*cos(oa[j].kos)-y*sin(oa[j].kos);
y=xx*sin(oa[j].kos)+y*cos(oa[j].kos);
}
}
printf("%.3f %.3f\n",x,y);
}
}