zoukankan      html  css  js  c++  java
  • NYOJ111分数加减法

    分数加减法

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
    编写一个C程序,实现两个分数的加减法
     
    输入
    输入包含多行数据 
    每行数据是一个字符串,格式是"a/boc/d"。 
    其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

    数据以EOF结束 
    输入数据保证合法
    输出
    对于输入数据的每一行输出两个分数的运算结果。 
    注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
    样例输入
    1/8+3/8
    1/4-1/2
    1/3-1/3
    样例输出
    1/2
    -1/4
    0
    View Code
     
    #include<stdio.h>
    int main()
    {
        int a,b,c,d,mm,m,z,zz,t;
        char f;
        while(scanf("%d/%d%c%d/%d",&a,&b,&f,&c,&d)!=EOF)
        {
            if(f=='+')
            {
                m=b*d;
                z=a*d+b*c;
                mm=m;
                zz=z;
                while(1)
                {
                    if(z==0)
                    {
                        printf("%d\n",0);break;
                    }
                    if(m<z)
                    {
                        t=m;
                        m=z;
                        z=t;
                    }
                    while(z)
                    {
                        t=m%z;
                        m=z;
                        z=t;
                    }
                    if(mm==1)
                    {
                        printf("%d\n",zz);
                        break;
                    }
                    else if(mm/m==1)
                    {
                        printf("%d\n",zz/m);
                        break;
                    }
                    else
                        
                    {
                        printf("%d/%d\n",zz/m,mm/m);
                        break;
                    }
                        
                }
            }
            else if(f=='-')
            {
                m=b*d;
                z=a*d-b*c;
                mm=m;
                zz=z;
                while(1)
                {
                    if (zz==0)
                    {
                        printf("%d\n",0);break;
                    }
                    if(z<0)
                    
                    {
                        z=-z;
                    }
                    if(m<z)
                    {
                        t=m;
                        m=z;
                        z=t;
                    }
                    while(z)
                    {
                        t=m%z;
                        m=z;
                        z=t;
                    }
                    if(mm==1)
                    {
                        printf("%d\n",zz);
                        break;
                    }
                    else if(mm/m==1)
                    {
                        printf("%d\n",zz/m);
                        break;
                    }
                    else    
                    {
                        printf("%d/%d\n",zz/m,mm/m);
                        break;
                    }
                    
                }
            }
        }
        return 0;
    }
    
            
  • 相关阅读:
    逆元应用求组合数
    树的重心入门
    扫描线求面积的并,交
    涂抹果酱
    牧场的安排
    「SCOI2005」互不侵犯
    Network Coverage
    Linux命令传输文件
    VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti
    Springboot开启SpringSecurity
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_2012_06_120000.html
Copyright © 2011-2022 走看看