官方题解 | Force
2025-09-06 19:01:55
发布于:云南
25阅读
0回复
0点赞
C. Force
Subtask 100 pt
引入三角形法则:当两个向量首尾相接时,从第一个向量的起点指向第二个向量终点的向量,即为这两个向量的和向量。
解决问题的过程如下:
-
先将每个力分解为水平( 轴)和垂直( 轴)分量:
- 水平分量:
- 垂直分量:
-
合力计算:将所有水平分量相加得到总水平分量 ,所有垂直分量相加得到总垂直分量 。合力大小 。
方向计算:使用 计算合力方向(弧度),然后转换为角度。如果结果为负,加 使其在 区间内。
AC Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
const double PI = acos(-1.0L);
signed main(){
int n; cin >> n;
double xx = 0.0;
double yy = 0.0;
for(int i = 1;i <= n;i++){
double x,f; cin >> x >> f;
double k = x * PI / 180.0;
xx += f * cos(k);
yy += f * sin(k);
}
if(fabs(xx) < 1e-12 && fabs(yy) < 1e-12){
cout << 0 << " " << 0;
return 0;
}
double mag = sqrt(xx * xx + yy * yy);
double t = atan2(yy,xx) * 180.0 / PI;
if(t < 0) t += 360.0;
cout << (int)floor(mag) << " " << (int)floor(t);
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个