0
已解决
姚炫好
资深守护
资深守护
题目链接: 酷町堂:6721
题目描述 De**ion
有两个问题
问题一:在一个平面内,线段 DE与直线 FG 相交于点 O,已知 ∠DOF=x∘,请你在直线 FG 上找一点 P,使得 △DOP 为等腰三角形,求 ∠D 的度数。(如果答案不是整数,则保留 1 位小数)
问题二:已知一个直角三角形的两条边分别为 m,n,求第三条边的长度(保留 5 位小数)。
输入描述 Input De**ion
一行三个正整数,分别为 x,m,n。
输出描述 Output De**ion
输出两行,第一行为第一问的答案,第二行为第二问的答案。
如果有多解,请用空格隔开,且从小到大输出。
样例输入 Sample Input
60 1 1
样例输出 Sample Output
30 60 1.41421
数据范围及提示 Data Size & Hint
【第一问说明】
当点 P在点 O 左边时,形成的△DOP 为等边三角形,∠D=60∘
当点 P 在点 O右边时,形成的 △DOP 中,
∠DOP=180∘−60∘=120∘,为顶角,
∠D=(180∘−120∘)/2=30∘
【第二问说明】
第三条边为斜边,长度为sqrt(12+12)=1.41421…
【数据范围】
x<90
m≤n≤109
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,m;
double x,c,d,a,b;
int main(){
cin>>x>>n>>m;
a=180-x;
b=a/2;
c=180-x;
d=(180-c)/2;
if(max(b,d)==b){
if(d==(int)d){
cout<<(int)d<<" ";
}else{
printf("%.1f ",d);
}
if(b==(int)b){
cout<<(int)b<<"\n";
}else{
printf("%.1f\n",b);
}
}else{
if(b==(int)b){
cout<<(int)b<<" ";
}else{
printf("%.1f ",b);
}
if(d==(int)d){
cout<<(int)d<<"\n";
}else{
printf("%.1f\n",d);
}
}
printf("%.5f",sqrt(n*n+m*m));
return 0;
}