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

    分数加减法
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 13666   Accepted: 4594

    Description

    编写一个C程序,实现两个分数的加减法

    Input

    输入包含多行数据 
    每行数据是一个字符串,格式是"a/boc/d"。 

    其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 

    数据以EOF结束 
    输入数据保证合法

    Output

    对于输入数据的每一行输出两个分数的运算结果。 
    注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

    Sample Input

    1/8+3/8
    1/4-1/2
    1/3-1/3

    Sample Output

    1/2
    -1/4
    0

    分析:先通分再约分,即求出两个分母的最小公倍数,求分子分母的最大公约数来约分,
    最终结果可能是0,那么直接输出0;
    可能是整数
    可能是正数,也可能是负数;
     1 #include <stdio.h>
     2 #include <math.h>
     3 
     4 int gcd(int x, int y){//辗转相除法求最大公约数,x >= y;
     5     if(x < y){
     6         int tmp = x;
     7         x = y;
     8         y = tmp;
     9     }
    10     if(y == 0)
    11         return x;
    12     return gcd(y, x % y);
    13 }
    14 
    15 int main(){
    16     int a, b, c, d, _gcd, _lcm, numerator, _a, _c, _gcd1;
    17     char o;
    18     while(scanf("%d/%d%c%d/%d", &a, &b, &o, &c, &d) != EOF){
    19         _gcd = gcd(b, d);
    20         _lcm = b / _gcd * d;//两个分母的最小公倍数
    21         _a = a * d / _gcd;//通分后第一个分式的分子
    22         _c = c * b / _gcd;//通分后第二个分式的分子
    23                 //计算和式的分子值
    24         if(o == '+')
    25             numerator = _a + _c;
    26         else
    27             numerator = _a - _c;
    28                 //如果分子值为0,则直接输出
    29         if(numerator == 0)
    30             printf("%d
    ", numerator);
    31         else{
    32             _gcd1 = gcd(abs(numerator), _lcm);
    33                         //最大公约数和分母相同,说明分子和分母相同,最后的值为整数
    34             if(_gcd1 == _lcm)
    35                 printf("%d
    ", numerator / _gcd1);
    36             else
    37                 printf("%d/%d
    ", numerator / _gcd1, _lcm / _gcd1);
    38         }
    39     }
    40     return 0;
    41 }
     
  • 相关阅读:
    一个短信验证码倒计时插件
    记一次图片优化经历
    前端开发中两种常见的图片加载方式
    《javascript面向对象精要》读书笔记
    less hack 兼容
    第一次项目总结
    你总说毕业遥遥无期,可转眼就各奔东西
    【翻译】理念:无冲突的扩展本地DOM原型
    【翻译】jQuery是有害的
    202002280156-《统治世界的10种算法(摘自极客大学堂)》
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/5796808.html
Copyright © 2011-2022 走看看