C++/Python 计算多个分数的乘积(含代码示例)
计算多个分数的乘积(C++/Python 实现)
本文将介绍如何使用 C++ 和 Python 计算多个分数的乘积,并将结果化简为最简形式。
问题描述:
给定 n 个分数 aᵢ / bᵢ,计算它们的乘积。
输入:
- 第一行:一个整数 n (1 <= n <= 20),表示分数的个数。* 接下来 n 行:每行两个整数 a,b,分别代表一个分式的分子和分母。(0 <= a,b <= 10⁹,b != 0)
输出:
- 所有分式的乘积。如果结果是整数,直接输出这个整数。否则请输出结果的最简形式。保证结果的分子和分母都在 int 范围内。
思路:
- 将所有分式的分子相乘得到乘积的分子,将所有分式的分母相乘得到乘积的分母。2. 将乘积的分子和分母化简为最简形式。
具体步骤:
- 读入 n 的值,表示有 n 个分式。2. 初始化乘积的分子和分母为 1。3. 循环 n 次,读入每个分式的分子和分母,将分子相乘得到乘积的分子,将分母相乘得到乘积的分母。4. 调用最大公约数函数 gcd(),将乘积的分子和分母分别除以最大公约数,得到最简形式的分子和分母。5. 判断最简形式的分母是否为 1,如果是则直接输出最简形式的分子,否则输出最简形式的分子和分母。
最大公约数函数 gcd() 的实现:
- 如果分母为 0,则返回分子的绝对值。2. 否则,递归调用 gcd(),传入分母和分子取余分母的结果。
代码示例:
**C++:**c++#include
using namespace std;
int gcd(int a, int b) { return b == 0 ? abs(a) : gcd(b, a % b);}
int main() { int n; cin >> n;
long long numerator = 1, denominator = 1; for (int i = 0; i < n; ++i) { int a, b; cin >> a >> b; numerator *= a; denominator *= b; }
int commonDivisor = gcd(numerator, denominator); numerator /= commonDivisor; denominator /= commonDivisor;
if (denominator == 1) { cout << numerator << endl; } else { cout << numerator << '/' << denominator << endl; }
return 0;}
**Python:**pythondef gcd(a, b): return abs(a) if b == 0 else gcd(b, a % b)
n = int(input())
numerator = 1denominator = 1for _ in range(n): a, b = map(int, input().split()) numerator *= a denominator *= b
common_divisor = gcd(numerator, denominator)numerator //= common_divisordenominator //= common_divisor
if denominator == 1: print(numerator)else: print(f'{numerator}/{denominator}')
示例输入:
31 23 45 6
示例输出:
5/8
原文地址: http://www.cveoy.top/t/topic/doIT 著作权归作者所有。请勿转载和采集!