C语言:计算多个分数的乘积并化简为最简形式
C语言:计算多个分数的乘积并化简为最简形式
本文将介绍如何使用C语言计算多个分数的乘积,并将结果化简为最简形式。
问题描述:
给定n个分数 ai / bi,求它们的乘积并以最简形式输出。
输入:
第一行:一个整数n (1 <= n <= 20),表示分数的个数。接下来n行:每行两个整数a和b,分别代表一个分式的分子和分母 (0 <= a, b <= 10^9, b != 0)。
输出:
所有分式的乘积。如果结果是整数,直接输出这个整数。否则请输出结果的最简形式。保证结果的分子和分母都在int范围内。
算法步骤:
- 读取输入的n。2. 定义两个变量
result_num和result_den,分别初始化为1,用于存储结果的分子和分母。3. 循环n次,每次读取一个分式的分子a和分母b。4. 将result_num乘以a,result_den乘以b。5. 计算result_num和result_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为分式个数。这是因为程序只需要遍历一遍输入的分数即可完成计算。
原文地址: https://www.cveoy.top/t/topic/dpef 著作权归作者所有。请勿转载和采集!