比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAAAAAETTE
题目名称 Asm.Def的命令 最终得分 60
用户昵称 dududu 运行时间 38.288 s
代码语言 C++ 内存使用 11.42 MiB
提交时间 2015-10-31 11:58:26
显示代码纯文本
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
const int KN=100000+10;
const double w=3.1415926535897;
struct zb
{
	float x,y;
	int du;
};
zb dke[KN];
int N,Q;
void read()
{
	cin>>N>>Q;
	for(int i=1;i<=N;i++)
	{
		dke[i].x=0;
		dke[i].y=i;
		dke[i].du=0;
	}
}
void doone(int i)
{
	printf("%.1f %.1f",dke[i].x,dke[i].y);
}
void dotwo(int a,int b,int dx,int dy)
{
	for(int i=a;i<=b;i++)
	{
		dke[i].x+=dx;
		dke[i].y+=dy;
	}
}
void dothree(int a,int b,int deg)
{
	for(int i=a;i<=b;i++)
	{
		dke[i].du+=deg;
		int aa=sqrt((dke[i].x)*(dke[i].x)+(dke[i].y)*(dke[i].y));
		if((dke[i].du)%360<180)
		dke[i].x=-aa*sin(w*(dke[i].du)/180);
		else
		dke[i].x=aa*sin(w*(dke[i].du)/180);
		if((dke[i].du)%360<90||(dke[i].du)%360>270)
		dke[i].y=-aa*cos(w*(dke[i].du)/180);
		else
		dke[i].y=aa*cos(w*(dke[i].du)/180);
	}
}
void sovle()
{
	for(int i=1;i<=Q;i++)
	{
		int x,a,b,dx,dy,deg;
		cin>>x;
		if(x==0)
		{
			cin>>a;
			doone(a);
		}
		else
		{
			if(x==1)
			{
				cin>>a>>b>>dx>>dy;
				dotwo(a,b,dx,dy);
			}
			else
			{
				cin>>a>>b>>deg;
				dothree(a,b,deg);
			}
		}
	}
}
int main()
{
	freopen("asm_command.in","r",stdin);
	freopen("asm_command.out","w",stdout);
	read();
	sovle();
	return 0;
}