分数相加[通俗易懂]

分数相加[通俗易懂]本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本题的要求很简单,就是求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 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 int GCD(int a,int b)
 5 {
 6     if(a%b==0)
 7         return b;
 8     return GCD(b,a%b);
 9 }
10 int main()
11 {
12     int n,i;
13     scanf("%d",&n);
14     int x,y;
15     int zi=0,mu=1;
16     for(i=0; i<n; i++)
17     {
18         scanf("%d/%d",&x,&y);
19         int h=mu*y/GCD(y,mu);
20 
21         zi=h/y*x+h/mu*zi;
22     mu=h;
23         int j=GCD(zi,mu);
24         if(j!=0)
25         {
26             mu/=j;
27             zi/=j;
28         }
29     }
30     if(zi==0)
31     {
32         printf("0\n");
33     }
34     else if(abs(zi)<abs(mu))
35     {
36         if(zi*mu<0) printf("-");
37         printf("%d/%d\n",abs(zi),abs(mu));
38     }
39     else
40     {
41         printf("%d",zi/mu);
42         if(zi%mu)
43         {
44             printf(" %d/%d",abs(zi%mu),abs(mu));
45         }
46         printf("\n");
47     }
48     return 0;
49 }

View Code

注意输出格式以及分子为零

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167105.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”的作用「建议收藏」

    <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”的作用「建议收藏」为页面添加正确的DOCTYPE很多设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是documenttype的简写。主要用来说明你用的XHTML或者HTML是什么版本。浏览器根据你DOCTYPE定义的DTD(文档类型定义)来解释页面代码。所以,如果你不注意设置了错误的DOCTYPE,结果会让你大吃一惊。XHTML1.0提供了三种DOCTYPE可选择:(1)过渡…

  • bit、byte、位、字节、汉字的关系[通俗易懂]

    bit、byte、位、字节、汉字的关系[通俗易懂]字节(Byte):通常将可表示常用英文字符8位二进制称为一字节。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.符号:英文标点2占一个字节,中文标点占两个字节.1字节(Byte)=8位(bit)比特(Bit),亦称二进制位。新港台:位元比特指二进制中的一位,是二进制最小信息单位。1比特就是1位  字节    字节(Byte):字节是通过网络传

    2022年10月25日
  • jsonp的实现原理_jsonp为什么要提供回调函数

    jsonp的实现原理_jsonp为什么要提供回调函数前几天看了动脑老师老宋讲的jsonp原理,觉得很受用,现做下笔记。什么是跨域:跨域是浏览器同源策略而产生的,在不同协议,不同端口,不同域名下(以上任意一个不同都算是跨域)的两个服务之间是无法互相访问的。举例:http://www.baidu.com/index.html调用http://www.baidu.com/server.php(非跨域)http

    2022年10月24日
  • 下载scrapy失败_手机安装包无法安装怎么办

    下载scrapy失败_手机安装包无法安装怎么办Scrapy安装有问题的,按照这个路径配置下anaconda的环境变量然后进入pycharm里的工作目录输入pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplescrapy安装完成后在cmd中输入scrapy,显示下图内容则证明安装成功:…

  • java移动端开发_移动端开发

    java移动端开发_移动端开发1.移动端视口问题视口是指浏览器的可视区域,移动端的视口到底是多宽呢?现在市面上的大部分手机,比如iphoneX,它的默认视口宽度为980px,而一个iphoneX的屏幕宽度仅仅为375px。看到问题了吗?一个宽度只有375像素的手机,却能够显示宽度为980像素的网页,自然而然,网页会被缩小。(注:实际上,这里说的375像素不是真实的物理像素,至于这个375像素是怎么来的,以及为什么大部分移动…

  • 成功解决500 : Internal Server Error问题

    成功解决500 : Internal Server Error问题成功解决500:InternalServerError问题目录解决问题解决思路解决方法解决问题500:InternalServerError解决思路内部服务器错误,说明你所浏览的服务器出现了故障解决方法可知出现的bug为AttributeError:module’tornado.web’hasnoattribute’asynchronous’参考文章:成功解决Attribu…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号