zoukankan      html  css  js  c++  java
  • 【JavaScript】7-33 有理数加法 (15分)

    题目:

    本题要求编写程序,计算两个有理数的和。

    输入格式:

    输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

    输出格式:

    在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。

    输入样例1:

    1/3 1/6

    输出样例1:

    1/2

    输入样例2:

    4/3 2/3

    输出样例2:

    2

    JavaScript代码:

    const { parse } = require('path')
    var readline = require('readline')
    
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    })
    
    rl.on('line', function(line) {
        var tokens = line.split(' ')
        var first = tokens[0].split('/')
        var second = tokens[1].split('/')
    
        var a1 = parseInt( first[0] )
        var b1 = parseInt( first[1] )
        var a2 = parseInt( second[0] )
        var b2 = parseInt( second[1] )
    
        var ret = sum(a1, a2, b1, b2)
        console.log(ret)
    })
    
    function sum(a1, a2, b1, b2) {
        var a
        var b
        var result
    
        if (b1 == b2) {
            b = b1
            a = a1 + a2
        } else { 
            b = b1 * b2 / gcd(b1, b2)     //最小公倍数=两个数相乘再除以最大公约数
            a = a1 * b / b1 + a2 * b / b2
        }
    
        if (b == 1) {
            result = a
        } else {
            result = reduce(a, b)
        }
    
        return result
    }
    
    //求最大公约数
    function gcd(n, m ){ 
        if(m == 0) return n
    
        return gcd( m, n % m ) 
    }
    
    //化简为最简分式
    function reduce(m, n) {   
        var min = m > n ? n : m
    
        for(let i = min; i >= 2; i--) {
            if(m % i == 0 && n % i == 0) {
                    m = m / i
                    n = n / i                              
            }                
        } 
    
        if (n == 1) {
            return m
        } else {
            return m + '/' + n 
        }
    }
  • 相关阅读:
    poj1047
    poj1129
    poj1050
    C#中break、continue的用法
    关于一个不大常用的SQL数据类型-UNIQUEIDENTIFIER
    关于net2.0里面新出现的类backgroundworker的应用
    深入讲解SQL Union和Union All的使用方法
    让你一次性搞定堆、栈、值类型、引用类型 (转载)
    EXEC与sp_executesql的区别及应用(转)
    几种常用排序算法总结(转载)
  • 原文地址:https://www.cnblogs.com/moonskies/p/14339803.html
Copyright © 2011-2022 走看看