当前位置: 首页 > news >正文

2025-03-01 学习记录--C/C++-PTA 7-35 有理数均值

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

在这里插入图片描述
在这里插入图片描述

二、代码(C语言)⭐️

#include <stdio.h>// 【关键】计算最大公约数(GCD)
long long gcd(long long a, long long b) {while (b != 0) {  // 当 b 不为 0 时循环long long temp = b;  // 临时变量存储 b 的值b = a % b;  // 计算 a 除以 b 的余数,赋值给 ba = temp;  // 将之前存储的 b 的值赋值给 a}return a;  // 当 b 为 0 时,a 就是最大公约数
}int main() {int n; // 有理数的个数scanf("%d", &n); // 读取有理数的个数long long fenZiArr[n], // 所有的分子组成一个数组fenMuArr[n]; // 所有的分母组成一个数组// 获得所有分母的乘积,即通分后的分母long long fenMuMultiply = 1; // 初始化分母乘积为 1// 将输入的分子分母依次放入各自的数组中去for (int i = 0; i < n; i++) {scanf("%lld/%lld", &fenZiArr[i], &fenMuArr[i]); // 读取分子和分母// 【关键】对 当前分数 进行约分long long gcdValue1 = gcd(fenZiArr[i], fenMuArr[i]); // 计算分子和分母的最大公约数fenZiArr[i] /= gcdValue1; // 分子约分fenMuArr[i] /= gcdValue1; // 分母约分// 【关键】计算 当前分母 与 fenMuMultiply 的最大公约数long long gcdValue2 = gcd(fenMuMultiply, fenMuArr[i]);// 更新 fenMuMultiply 为当前分母与 fenMuMultiply 的最小公倍数fenMuMultiply *= (fenMuArr[i] / gcdValue2);}// 获得通分后的分子long long fenZiSum = 0; // 初始化分子和为 0for (int i = 0; i < n; i++) {fenZiArr[i] *= (fenMuMultiply / fenMuArr[i]); // 将分子通分fenZiSum += fenZiArr[i]; // 累加通分后的分子}// 获得求平均值后的分母long long fenMuAverage;fenMuAverage = fenMuMultiply * n; // 平均值分母为 fenMuMultiply * n// 求所得平均值(fenZiSum / fenMuAverage)的最简分数形式long long gcdValue3 = gcd(fenZiSum, fenMuAverage); // 计算分子和分母的最大公约数// 约分化简fenZiSum /= gcdValue3; // 分子约分fenMuAverage /= gcdValue3; // 分母约分// 若分母为1,则只输出分子if (fenMuAverage == 1) {printf("%lld", fenZiSum); // 输出分子} else {printf("%lld/%lld", fenZiSum, fenMuAverage); // 输出 a/b(分子/分母) 形式}return 0; // 程序正常结束
}

C语言 使用欧几里得算法(辗转相除法)计算两个整数的最大公约数请看我的另一篇文章。

在这里插入图片描述


http://www.mrgr.cn/news/92756.html

相关文章:

  • 如何使用 Jenkins 实现 CI/CD 流水线:从零开始搭建自动化部署流程
  • C/C++:conan包管理工具的使用
  • 音乐游戏Drummania(GITADORA)模拟器
  • sqli-lab
  • 设置同一个局域网内远程桌面Ubuntu
  • 工程化与框架系列(11)--Serverless实践
  • 【朝夕教育】《鸿蒙原生应用开发从零基础到多实战》004-TypeScript 中的泛型
  • 【Linux】Linux的基本指令(3)
  • 【计算机网络】IP协议
  • 2继续NTS库学习(读取shapefile)
  • Unity TMPro显示中文字体
  • 【通俗讲解电子电路】——从零开始理解生活中的电路(一)
  • Windows对比MacOS
  • 【01游戏——DFS】
  • 使用Semantic Kernel:对DeepSeek添加自定义插件
  • 【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)
  • 工程化与框架系列(4)--Webpack 高级配置详解
  • 大模型WebUI:Gradio全解12——LangChain原理、架构和组件(2)
  • 【Linux第一弹】Linux基础指令(上)
  • BIO、NIO、AIO、Netty从简单理解到使用