题解
计算并联电阻的阻值
1 条题解
-
0
P4212 计算并联电阻的阻值(入门)
解题思路
电阻就像水管,水管越粗水越容易流过,也就是电阻越小、越"通畅"。两个电阻并联,相当于给电流多开了一条路,总阻值反而比单独任何一个都小。
题目给了并联公式:R = 1 / (1/r1 + 1/r2)。如果我们先把 1/r1 + 1/r2 算出来再取倒数,数学上可以通分化简成:
R = r1 × r2 / (r1 + r2)
两个公式结果一模一样,但第二个只要一次乘法和一次除法,算起来更简单,我们直接用第二个。
需要注意的地方:
- 输入是浮点数(比如 1 和 2),所以要用 double 存,不能只用 int,否则 1/2 会直接变成 0,答案就错了。
- 输出要保留小数点后 2 位,用 fixed 加 setprecision(2)。
- 题目给的都是正的电阻值,不会出现除数为 0 的情况,不用担心。
比如输入 1 2:R = 1×2 / (1+2) = 2/3 ≈ 0.666…,保留 2 位小数就是 0.67,和样例一致。
参考代码
// 用途:输入两个电阻的阻值,按并联公式求出并联后的总阻值并保留2位小数输出 #include <iostream> #include <iomanip> using namespace std; int main() { double r1, r2; cin >> r1 >> r2; // 并联公式:R = r1*r2 / (r1+r2),通分后比原公式更好算 double r = r1 * r2 / (r1 + r2); cout << fixed << setprecision(2) << r << endl; // 保留2位小数 return 0; }复杂度分析
程序只做了两次读入和一次乘除运算,跟数据大小无关,所以时间复杂度是 O(1);额外空间只用了两个 double 变量,也是 O(1)。题目没有说明电阻值的范围,但因为只做常数次运算,输入再大也瞬间算完,用 double 存浮点数也足够精确。
- 1