计算多个分数的乘积(C++/Python 实现)

本文将介绍如何使用 C++ 和 Python 计算多个分数的乘积,并将结果化简为最简形式。

问题描述:

给定 n 个分数 aᵢ / bᵢ,计算它们的乘积。

输入:

  • 第一行:一个整数 n (1 <= n <= 20),表示分数的个数。* 接下来 n 行:每行两个整数 a,b,分别代表一个分式的分子和分母。(0 <= a,b <= 10⁹,b != 0)

输出:

  • 所有分式的乘积。如果结果是整数,直接输出这个整数。否则请输出结果的最简形式。保证结果的分子和分母都在 int 范围内。

思路:

  1. 将所有分式的分子相乘得到乘积的分子,将所有分式的分母相乘得到乘积的分母。2. 将乘积的分子和分母化简为最简形式。

具体步骤:

  1. 读入 n 的值,表示有 n 个分式。2. 初始化乘积的分子和分母为 1。3. 循环 n 次,读入每个分式的分子和分母,将分子相乘得到乘积的分子,将分母相乘得到乘积的分母。4. 调用最大公约数函数 gcd(),将乘积的分子和分母分别除以最大公约数,得到最简形式的分子和分母。5. 判断最简形式的分母是否为 1,如果是则直接输出最简形式的分子,否则输出最简形式的分子和分母。

最大公约数函数 gcd() 的实现:

  1. 如果分母为 0,则返回分子的绝对值。2. 否则,递归调用 gcd(),传入分母和分子取余分母的结果。

代码示例:

**C++:**c++#include #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

C++/Python 计算多个分数的乘积(含代码示例)

原文地址: http://www.cveoy.top/t/topic/doIT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录