首页 > 代码库 > UVA - 12301-An Angular Puzzle
UVA - 12301-An Angular Puzzle
给出如图三角形里的五个角度,求出x
我的做法:
直接写出表达式解
我的代码:
#include<iostream> #include<map> #include<string> #include<cstring> #include<cstdio> #include<cstdlib> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; const double pi=acos(-1.0); struct dot { double x,y; dot(){} dot(double a,double b){x=a,y=b;} friend dot operator -(dot a,dot b){return dot(a.x-b.x,a.y-b.y);} friend double operator /(dot a,dot b){return a.x*b.x+a.y*b.y;} }; double dis(dot a,dot b) { return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)); } double cang(dot a,dot b) { return acos(a/b/dis(a,dot(0,0))/dis(b,dot(0,0))); } double cg1(double a) { return a/pi*180; } double cg2(double a) { return a/180*pi; } int main() { dot f,g; double a,b,c,d,e,k[10],ans; while(cin>>a>>b>>c>>d>>e) { if(a+b+c+d+e==0) break; if(a+b+c+d+e>180.0) printf("Impossible\n"); else { a=cg2(a);b=cg2(b);c=cg2(c);d=cg2(d);e=cg2(e); k[1]=-tan(d+e); k[2]=tan(c); k[3]=tan(b+c); k[4]=-tan(e); f.x=k[1]/(k[1]-k[2]); f.y=k[2]*f.x; g.x=k[4]/(k[4]-k[3]); g.y=k[3]*g.x; ans=cg1(cang(f-g,f)); printf("%.2lf\n",ans); } } }
UVA - 12301-An Angular Puzzle
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。