分数相加[通俗易懂]

分数相加[通俗易懂]本题的要求很简单,就是求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

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

 

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

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

(0)
上一篇 2022年8月5日 下午7:00
下一篇 2022年8月5日 下午7:16


相关推荐

  • 暴力激活成功教程密码算法-JS

    暴力激活成功教程密码算法-JSmd5加密算法vargetMd5=function(string){functionRotateLeft(lValue,iShiftBits){return(lValue<>>(32-iShiftBits));}functionAddUnsigned(lX,lY){

    2022年8月22日
    8
  • 常见开源分布式存储系统

    常见开源分布式存储系统系统整体对比对比说明/文件系统TFSFastDFSMogileFSMooseFSGlusterFSCeph开发语言C++CPerlCCC++开源协议GPLV2GPL

    2022年5月1日
    47
  • Weblogic-SSRF漏洞复现

    Weblogic-SSRF漏洞复现这两天了解的ssrf复现这个漏洞差不多了,开始进行笔迹整理:上面一篇介绍的就是些入门的基础,让你可以更加好的去理解,更好的懂ssrf这个漏洞的原理。0x00到底什么是ssrf呢?SSRF(server-siderequestforgery):服务器端请求伪造。是一种由攻击者构造形成由服务器端发起请求的一个安全漏洞,一般情况下,ssrf攻击的目标是从外网无法访问的内部系统(正是因…

    2022年6月25日
    52
  • 【Pycharm】主题背景颜色更改

    【Pycharm】主题背景颜色更改近日在家使用 Pycharm 时 由于家里环境原因 电脑常常会迎着日光放置 导致使用深色主题的 IDE 很容易导致视觉疲劳 因此想要换一个 Pycharm 的背景 更换方式 1 打开 Pycharm 的 File 点击 Settings 即文件 设置 PS 我的 Pycharm 是 2019 3 1 版本的 虽然绝大多数版本的 Pycharm 都没有更换布局 但是给出参考为好 2 在 Settings 中找到 Appearance 点击里面的 Theme 即可选择不同的界面风格

    2026年3月27日
    2
  • SVN目录对号图标(更新、冲突)不显示

    SVN目录对号图标(更新、冲突)不显示

    2022年1月9日
    69
  • 使用gitolite搭建git服务器

    使用gitolite搭建git服务器使用gitolite搭建git服务器

    2022年4月24日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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