PTA题解 --- N个数求和(C语言)

今天是PTA题库解法讲解的第二天,今天我们要讲解N个数求和,题目如下:

要解决这个问题,我们可以用C语言编写一个程序来处理和简化分数。程序的基本思路如下:

1. 定义一个函数来计算两个数的最大公约数(GCD),用于分数的简化。
2. 读取输入的N个分数,每次读取两个整数作为分子和分母。
3. 定义两个变量来存储累加的分数的分子和分母。
4. 对每个输入的分数执行以下操作:
   a. 将其与累加分数相加,即分子相加后存储,分母相乘后存储。
   b. 简化结果分数,即用GCD函数求分子和分母的最大公约数,然后分别除以该公约数。
5. 最后,输出结果分数的最简形式,如果有整数部分,则分开输出。

#include <stdio.h>// 计算最大公约数
long long gcd(long long a, long long b) {return b == 0 ? a : gcd(b, a % b);
}// 分数累加并简化
void add_fraction(long long a, long long b, long long *sum_numerator, long long *sum_denominator) {// a/b 是当前分数,sum_numerator/sum_denominator 是累加的分数*sum_numerator = *sum_numerator * b + *sum_denominator * a;*sum_denominator *= b;// 简化分数long long g = gcd(*sum_numerator, *sum_denominator);*sum_numerator /= g;*sum_denominator /= g;
}int main() {int N;scanf("%d", &N);long long sum_numerator = 0; // 累加的分数的分子long long sum_denominator = 1; // 累加的分数的分母for (int i = 0; i < N; i++) {long long numerator, denominator;scanf("%lld/%lld", &numerator, &denominator);add_fraction(numerator, denominator, &sum_numerator, &sum_denominator);}// 输出结果if (sum_numerator % sum_denominator == 0) {// 如果分子能整除分母,则只输出整数部分printf("%lld\n", sum_numerator / sum_denominator);} else if (abs(sum_numerator) > sum_denominator) {// 如果分子大于分母,则输出整数部分和分数部分printf("%lld %lld/%lld\n", sum_numerator / sum_denominator, abs(sum_numerator) % sum_denominator, sum_denominator);} else {// 否则只输出分数部分printf("%lld/%lld\n", sum_numerator, sum_denominator);}return 0;
}

我们把在编译器上面运行样例:

提交结果:

本题通过,今天的讲解到此为止~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqllab第二十三关通关笔记

知识点&#xff1a; mysqli_query() 返回值为资源型或布尔型如果内容为查询语句则返回资源型数据&#xff1b;如果内容为插入、更新、删除等语句则返回布尔类型结果mysql_fetch_array() 从结果集中取出一行作为关联数组或数字数组输入内容为指定查询的结果集单引号闭合绕过联…

分享5款占用系统资源少的软件

​ 在日常使用电脑时&#xff0c;我们需要各种软件来完成任务。以下是几款小巧但功能齐全的软件推荐。 1. 虚拟机软件——VirtualBox ​ VirtualBox是一款开源的虚拟机软件&#xff0c;允许用户在单一物理计算机上创建和运行多个虚拟操作系统。它支持多种操作系统&#xff0c…

【DFS算法】排列数字——acwing 842

问题描述 给定一个整数 n&#xff0c;将数字 1∼n 排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 n。 输出格式 按字典序输出所有排列方案&#xff0c;每个方案占一行。 数…

Starknet 训练营 Demo Day 顺利举办!获奖选手勇攀 Starknet 开发新高峰!

当全链游戏成为 2024 年 Web3 行业的热门关键词时&#xff0c;你是否注意到了一个冉冉升起的潜力生态——Starknet&#xff1f; Starknet 是基于 ZK-Rollup 技术的去中心化 L2 协议。由于其基于一种高度可扩展的密码学证明系统&#xff0c;便称为 STARK&#xff0c;使 DApp 能…

搭建一个自己的AI学术语音助手(一)

背景&#xff1a; 大模型出来后语音助手借着LLM的语义理解、知识组织能力的提升&#xff0c;升级了一波buffer。然后在使用这些语音助手的时候总觉得缺了点什么&#xff0c;但也讲不出来具体缺了什么。这几天的思考突然有了灵感&#xff0c;其实缺的就是自己的知识内容如何变成…

F-logic DataCube3 任意文件上传漏洞复现(CVE-2024-25832)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/setting_photo.php接口处存在任意文件上传漏洞 ,未经身份验证的攻击者可通过该漏洞在服务器端写入后门,获取服务器权限,进而控制整个web服务器。 …

陪诊系统平台的功能优势

便捷性&#xff1a;小程序基于移动互联网&#xff0c;用户可以随时随地通过手机或其他智能设备使用&#xff0c;无需亲自前往医院&#xff0c;从而节省了时间和精力。这种便捷性使得用户能够迅速获取相关信息&#xff0c;并进行预约等操作。 全面的信息服务&#xff1a;小程序提…

面向对象编程第二式:继承 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

在OpenStack架构中,Controller节点的配置(基础)

虚拟机的安装 新建虚拟机&#xff0c;选择自定义 默认选择即可 操作系统的镜像稍后选择 客户及操作系统选择Linux&#xff0c;注意选择centos 7 64位 给虚拟机命名 处理器的配置建议1&#xff1a;2 内存大小选择建议为&#xff1a;4GB 网络连接选择为&#xff1a;NAT 默认即可…

【机器学习】走进监督学习:构建智能预测模型的第一步

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Docker 安装部署 ORACLE 11g数据库

Docker 安装部署 ORACLE 11g数据库 背景&#xff1a; ​ 最新在开发数据中台数据接入模块&#xff0c;其中设计很多数据类型&#xff0c;包括ORACLE &#xff0c;因为是测试使用&#xff0c;想着快速部署测试&#xff0c;于是使用Docker 部署 Oracle , 生产环境不建议使用Doc…

YOLOv7-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

onecloud刷CasaOS系统后如何安装内网穿透实现公网访问本地文件

文章目录 1. CasaOS系统介绍2. 内网穿透安装3. 创建远程连接公网地址4. 创建固定公网地址远程访问 2月底&#xff0c;玩客云APP正式停止运营&#xff0c;不再提供上传、云添加功能。3月初&#xff0c;有用户进行了测试&#xff0c;局域网内的各种服务还能继续使用&#xff0c;但…

十二、项目采购管理

十二、项目采购管理 1、规划采购管理 ​ 规划采购管理是记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。 1,1、关键输入 组织过程资产 组织使用的各种合同协议类型也会影响规划采购管理过程中的决策。能够影响规划采购管理过程的组织过程资产包括&#xf…

力扣爆刷第96天之hot100五连刷66-70

力扣爆刷第96天之hot100五连刷66-70 文章目录 力扣爆刷第96天之hot100五连刷66-70一、33. 搜索旋转排序数组二、153. 寻找旋转排序数组中的最小值三、4. 寻找两个正序数组的中位数四、20. 有效的括号五、155. 最小栈 一、33. 搜索旋转排序数组 题目链接&#xff1a;https://le…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…

虚拟环境的激活

(此博客仅用于我记录虚拟环境的激活方法) 虚拟环境的激活命令: venv/Scripts/activate 在F:\git repo\Database-Course-Design 这个文件夹中启动命令行 这个文件夹中含有虚拟环境venv 输入命令venv/Scripts/activate&#xff0c;就得到下面的结果: 此时就激活了虚拟环境&…

python 基础知识点(蓝桥杯python科目个人复习计划64)

今日复习内容&#xff1a;做题 例题1&#xff1a;蓝桥课程抢购 问题描述&#xff1a; 为了能让更多的同学学到IT技术&#xff0c;蓝桥云课又开始了课程限时打折活动。 作为初学者的你&#xff0c;希望尽可能买到含金量总额更高的课程&#xff0c;当然其他同学也是这么想。 …

解锁基于LLMS的咒语:通过上下文学习重新思考对齐

一、写作动机&#xff1a; 最近的一项研究&#xff0c;LIMA&#xff0c;表明仅使用1K个示例进行SFT也可以实现显著的对齐性能&#xff0c;这表明对齐微调的效果可能是“表面的”。&#xff08;知识和推理能力来源于预训练&#xff0c;而不是必须通过对齐微调获得的。&#xff…

计算机图形学学习(一)——线的绘制、三角形填充绘制

以下摘抄自本人的计算机图形学上机报告 实验内容及要求&#xff1a; 理解并掌握中点画线法、Bresenham算法、扫描线法和重心坐标法的基本原理和算法步骤。使用编程语言C实现上述算法&#xff0c;并编写相应的代码。对于直线绘制算法&#xff0c;要求能够绘制水平、垂直、斜向等…