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 
        }
    }
  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/moonskies/p/14339803.html
Copyright © 2011-2022 走看看