Applese 的减肥计划 (几何问题)
链接:https://ac.nowcoder.com/acm/contest/330/J
来源:牛客网
Applese 最近又长胖了,于是它打算减肥——练习举重。
他在举重的时候用两只手往不同方向用力,从而把杠铃举起来。
已知 Applese 两只手分别产生的力的大小,以及它们之间的夹角,试求两力合力的大小。
输入描述:
仅一行三个整数 f1,f2,af1,f2,a,分别表示两只手产生的力的大小以及它们之间的夹角。
输出描述:
输出一个实数表示两力合力的大小,要求相对误差或绝对误差不超过 10−610−6。
严格来讲,如果你的答案是 a,而标准答案是 b,那么当 |a−b|max{1,|b|}≤10−6|a−b|max{1,|b|}≤10−6 时,你的答案会被认为是正确的。
示例1
输入
6 8 90
输出
10.0000000000
示例2
输入
10 10 60
输出
17.3205080757
备注:
1≤f1,f2≤1001≤f1,f2≤100
0≤a≤180
首先根据画图可得:已知 F1 , F2 ,和角度 a ,那么合力 F = sqrt (F1*F1 + F2*F2 - 2*F1*F2*cos(180-a) )
其次,计算cos时,要注意cos函数参数是角度的弧度制,而题目给的是角度制,所以这里要变换一下。
弧度 = 角度 * pi / 180;
pi 可以定义为 acos(-1.0)
最后,答案保留10位小数
#include<iostream>
#include<cmath>
const double pi = acos(-1.0) ;
using namespace std;
int main()
{
double f1,f2,a;
double ans;
while (cin>>f1>>f2>>a)
{
a = (180-a)*pi/180;
ans = sqrt(f1*f1+f2*f2-2*f1*f2*cos(a) );
printf("%.10lf\n",ans);
}
return 0;
}