C语言:计算多个分数的乘积并化简为最简形式

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

问题描述:

给定n个分数 ai / bi,求它们的乘积并以最简形式输出。

输入:

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

输出:

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

算法步骤:

  1. 读取输入的n。2. 定义两个变量 result_numresult_den,分别初始化为1,用于存储结果的分子和分母。3. 循环n次,每次读取一个分式的分子a和分母b。4. 将 result_num 乘以a,result_den 乘以b。5. 计算 result_numresult_den 的最大公约数gcd。6. 将 result_num 除以gcd得到最简分子,将 result_den 除以gcd得到最简分母。7. 如果最简分母为1,直接输出最简分子作为结果。8. 否则,输出 '最简分子/最简分母' 作为结果。

**示例代码:**c#include <stdio.h>

// 计算两个数的最大公约数int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b);}

int main() { int n; scanf('%d', &n);

int result_num = 1;  // 分子    int result_den = 1;  // 分母

for (int i = 0; i < n; i++) {        int a, b;        scanf('%d %d', &a, &b);

    result_num *= a;        result_den *= b;

    // 计算最大公约数        int g = gcd(result_num, result_den);        result_num /= g;        result_den /= g;    }

if (result_den == 1) {        printf('%d

', result_num); } else { printf('%d/%d ', result_num, result_den); }

return 0;}

时间复杂度分析:

假设输入的分式个数为n,则算法的时间复杂度为O(n),其中n为分式个数。这是因为程序只需要遍历一遍输入的分数即可完成计算。

C语言:计算多个分数的乘积并化简为最简形式

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

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