C语言:L1-009 N个数求和 (20 分)
文章目录
- 一、题目
- 二、方法1
- 1、思路
- 2、代码
一、题目
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入格式:
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2
…给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出格式:
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
输入样例1:
5
2/5 4/15 1/30 -2/60 8/3
输出样例1:
3 1/3
输入样例2:
2
4/3 2/3
输出样例2:
2
输入样例3:
3
1/3 -1/6 1/8
输出样例3:
7/24
二、方法1
1、思路
实际上本题考察分数相加:即分母通分,分子相加,约分。
易错点提示:
变量在长整形的范围内!
最大公约数 gcd(),使用递归的方式实现辗转相除法求最大公约数。
return b ? gcd(b, a % b) : a;
输出的时候注意考虑所有情况:
设结果为n,则① n > 1;② n = 1;③ n < 1;
2、代码
#include<stdio.h>
long long int gcd(long long int a, long long int b)
{return b ? gcd(b, a % b) : a;
}
int main()
{long long int N = 0, a = 0, b = 0, sum_a = 0, sum_b = 1, t;scanf("%lld", &N);for (int i = 0; i < N; i++){scanf("%lld/%lld", &a, &b);//通分相加sum_a *= b;sum_a += a * sum_b;sum_b *= b;//约分t = gcd(sum_a, sum_b);sum_a /= t;sum_b /= t;}if (sum_a % sum_b == 0)printf("%lld\n", sum_a / sum_b);else if (sum_a < sum_b)printf("%lld/%lld\n", sum_a, sum_b);elseprintf("%lld %lld/%lld\n", sum_a / sum_b, sum_a % sum_b, sum_b);return 0;
}
C语言:L1-009 N个数求和 (20 分)相关推荐
- 7-9 N个数求和 (20 分)
7-9 N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤ ...
- N个数求和 (20 分)
N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100) ...
- 关于团体程序设计天梯赛-练习集 L1-009 N个数求和 (20 分) 以及测试点三过不了的一些想法
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后一行按格式a1/b1 ...
- L1-009 N个数求和 (20分)(分数求和)
N个数求和 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后一行按格 ...
- 天梯赛 L1-009 N个数求和 (20 分)
涉及假分数和负数,因此是分子绝对值与分母比较(分母必正) #include <iostream> #include <cmath> using namespace std;in ...
- 5-1 N个数求和 (20分)
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤\le≤100).随后一行按格式a ...
- N个数求和 (20分)
本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后一行按格式a1/b1 ...
- 实验4-1-5 统计素数并求和 (20 分)
实验4-1-5 统计素数并求和 (20 分) 本题要求统计给定整数M和N区间内素数的个数并对它们求和. 输入格式: 输入在一行中给出两个正整数M和N(1≤M≤N≤500). 输出格式: 在一行中顺序输 ...
- 实验4-1-7 特殊a串数列求和 (20 分)
实验4-1-7 特殊a串数列求和 (20 分) 给定两个均不超过9的正整数a和n,要求编写程序求a+a**a+aaa++⋯+a**a⋯a(n个a)之和. 输入格式: 输入在一行中给出不超过9的正整数a ...
- 1002 写出这个数 (20 分)
1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...
最新文章
- 声波配网:通过特定的声波序列将wifi密码发到无屏幕的设备上
- java之IO整理(中)
- java 读文件夹_java怎么读取读取文件夹下的所有文件夹和文件?
- php中var_dump是什么意思,php中的var_dump()方法的詳細說明
- 探秘云游戏背后实时音视频技术实践
- 怎样测量地图上曲线的长度_测量长度的特殊方法
- Graphics 单元中的类
- 移动端报表JS开发示例
- android 截屏 分享,Android应用内截图分享的实现记录
- 逆天闪存设备 居然能将数据保存至少百年
- VMware虚拟机与本地计算机进行资源共享的教程?
- 从招聘信息看-数据分析师(数据分析报告)
- SHOPEX网店系统测试 50万家网站的安全令人担忧
- 教你六步拆解 DDD领域驱动设计落地实践
- Java项目中使用Freemarker生成Word文档
- 中文老师经常说的IB课程,到底是什么?
- 项目docker容器化部署步骤
- VS2019:C++程序lib静态库、dll动态库的生成和使用
- 健康大数据管理与服务类毕业论文文献都有哪些?
- 从window到linux的折腾