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 
        }
    }
  • 相关阅读:
    python基础:8.正则表达式
    [Unity工具]批量修改字体
    产品理念(微博和Twitter)
    个性化推荐技术漫谈
    谱聚类算法(转自http://www.cnblogs.com/vivounicorn/archive/2012/02/10/2343377.html)
    Ubuntu输入正确密码后无法登录
    KMeans java实现(未用Hadoop版改进)
    Nutch安装指南
    KMeans的MapReduce实现
    特征向量的几何意义
  • 原文地址:https://www.cnblogs.com/moonskies/p/14339803.html
Copyright © 2011-2022 走看看