最简分式概念_怎样才算最简分式

最简分式概念_怎样才算最简分式ProblemL:最简分式Description我们知道,5/3=1+3/5,称等号后面的式子为最简分式。也就是说,在分式中,分子一定要小于分母,而且分子、分母是互质的。请写一个程序,对于用户输入的一个合法分式,输出其约简之后的结果。Input输入有多行,每行是“m/n”的格式表示的一个分式,其中m和n都是int类型范围内的正整数。输入至EOF结束。Output输出的行数与输入一致,且每行输出与上述输入一一对应。如果约简后,分子部分是0,则只输出整数部分。如果整数部分是0,则按照“j/

2017年山科C语言期末考试
Problem L: 最简分式

Description
我们知道,5/3=1+3/5,称等号后面的式子为最简分式。也就是说,在分式中,分子一定要小于分母,而且分子、分母是互质的。请写一个程序,对于用户输入的一个合法分式,输出其约简之后的结果。

Input
输入有多行,每行是“m/n”的格式表示的一个分式,其中m和n都是int类型范围内的正整数。

输入至EOF结束。

Output
输出的行数与输入一致,且每行输出与上述输入一一对应。

如果约简后,分子部分是0,则只输出整数部分。

如果整数部分是0,则按照“j/k”的格式输出;

如果整数部分不是0,则按照“i+j/k” 的格式输出约简后的结果。

其中i、j和k分别是约简后的整数部分、分子部分和分母部分。

Sample Input

100/56
8/4
3/5

Sample Output

1+11/14
2
3/5

ans:

#include<stdio.h>
#include<stdlib.h>

int getMin(int a,int b)
{ 
   
    if(a<b)return a;
    else   return b;
}

int main()
{ 
   
    int m,n;
    while(scanf("%d/%d",&m,&n)!=EOF){ 
   
        if(m%n==0){ 
   //最简单的情况,直接输出m/n
            printf("%d\n",m/n);
        }else if(m<n){ 
   //分子小于分母,分式形式,看是否要化为最简分式
            int min=getMin(m,n);
            for(int i=2;i<=min;i++){ 
   
                while(m%i==0&&n%i==0){ 
   
                    m/=i;
                    n/=i;
                }
            }
            printf("%d/%d\n",m,n);
        }else{ 
   //分子大于分母,拆分为一个整数加一个分式
            int len=0;
            while(m>n){ 
   
                len++;
                m-=n;
            }
            int min=getMin(m,n);
            for(int i=2;i<=min;i++){ 
   
                while(m%i==0&&n%i==0){ 
   
                    m/=i;
                    n/=i;
                }
            }
            printf("%d+%d/%d\n",len,m,n);
        }
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wireshark解析tcp报文的内容_wireshark解析vxlan

    wireshark解析tcp报文的内容_wireshark解析vxlan在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN,FIN,ACK,PSH,RST,URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连…

    2022年9月30日
  • Ldap服务器搭建流程

    Ldap服务器搭建流程之前搭建了个Ldap服务器,今天想要再另一台机器上搭建的时候发现很多地方还是会遇到坑,于是将搭建过程梳理记录下来,避免以后再遇到坑一、安装配置ldap1、安装ldap    yuminstall-yopenldap*2、拷贝配置文件    cp/usr/share/openldap-servers/slapd.conf.obsolete/etc/openldap/slapd…

    2022年5月14日
  • kong网关作用_网关的基本功能

    kong网关作用_网关的基本功能转载李亚飞大佬的文章:https://www.lyafei.com/Kong网关简介安装之前简单介绍安装了Kong,这篇就是深入Kong详细讲述下它的一些工作原理、核心概念。附上:Kong官网:https://konghq.com/KongGitHub地址:https://github.com/kong/kongKong的工作原理Kong默认开放的端口接收客户端流量的端口,proxy部分:8000——http端口:8443——https端口adm.

    2022年9月10日
  • 安卓支持aac编码吗_aac音频格式

    安卓支持aac编码吗_aac音频格式android音频AAC硬编码,完整事例,可用播放器播放收听…

    2022年8月30日
  • servlet的工作原理_hibernate工作原理

    servlet的工作原理_hibernate工作原理图一图二为sevlet。图三为springmvc

    2022年10月4日
  • Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。

    Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、Esp8266之搭建开发环境,开始一个“hellowworld”串口打印。2、Esp8266之利用GPIO开始使用按钮点亮你的“第一盏灯”。3、Esp8266之利用“软件定时器”定时0.5秒闪烁点亮一盏LED。4、Esp8266之了解P

    2022年5月30日

发表回复

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

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