Ural 1046 Geometrical Dreams

来源:互联网 发布:手游编程 编辑:程序博客网 时间:2024/06/06 14:28

Link To The Problem


Sokution : 用复数类可以使问题大大简化


Code:

#include<cstdio>#include<stack>#include<cmath>#include<iostream>#include<algorithm>#include<cstring>#include<queue>#include<map>#include<complex>using namespace std;#define nMax 300#define LL long long#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)#define CLR(a) memset((a),0,sizeof((a)))#define DB double #define pb push_back#define mp make_pair// ¿?¿?¿? C++ STLtypedef complex<double> Co;int n;Co M[nMax];double a[nMax];#define pi acos(-1.0)Co ans[nMax];int main() {freopen("in.txt","r",stdin);scanf("%d",&n);double u,v;rep(i,n) {scanf("%lf%lf",&u,&v);M[i] = Co(u,v);}rep(i,n) {scanf("%lf",&a[i]);a[i] = a[i]/180.0*pi;}Co x(1,0),y(0,0);rep(i,n) {Co b(cos(a[i]),sin(a[i]));x *= b;y -= M[i];y *= b;y += M[i];}y = -y;x -= Co(1,0);ans[0] = y/x;x=Co(1,0),y=Co(0,0);rep(i,n) {Co b(cos(a[i]),sin(a[i]));x *= b;y -= M[i];y *= b;y += M[i];ans[i+1]=x*ans[0]+y;}rep(i,n) {printf("%.2lf %.2lf\n",ans[i].real(),ans[i].imag());}return 0;}


原创粉丝点击