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

    分数加减法

    时间限制: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

    特别注意2/1+4/1这种整除的情况
    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int gcd(int a,int b){
        if(a < 0) a = -a;
        if(a < b) swap(a,b);
        while(b){
            int t = b;
            b = a%b;
            a = t;
        }
        return a;
    }
    
    int main(){
        string str;
        while(cin>>str){
            int a = str[0]-'0', b = str[2]-'0', c=str[4]-'0', d=str[6]-'0';
            int numerator = a*d+c*b,denominator=d*b;
            if(str[3] == '-') numerator = a*d-c*b;
            int v = gcd(numerator,denominator);
            numerator /=v;
            denominator /=v;
            if(numerator == 0) cout<<0<<endl;
            else if(denominator == 1) cout<<numerator<<endl;
            else cout<<numerator<<"/"<<denominator<<endl;
        }
    }
  • 相关阅读:
    shell学习(三)
    shell学习(四)
    自定义yum源
    fpm制作rpm包
    shell学习(三)
    shell学习(二)
    linux系统下创建lvm挂载到指定目录
    nginx做代理安装docker
    df -h命令卡死解决办法
    docker安装
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3642003.html
Copyright © 2011-2022 走看看