7-33 有理数加法

题目链接:7-33 有理数加法

一. 题目

1. 题目

在这里插入图片描述

2. 输入输出样例

在这里插入图片描述

3. 限制

在这里插入图片描述

二、代码(python)

1. 代码实现

def GetGcd(a, b): # 获取公约数
  max_range:int
  min_num:int
  max_num:int
  if a == b:
    return a
  elif a < b:
    min_num = a
    max_num = b
  else:
    min_num = b
    max_num = a
  
  # 获取可能是公约数的最大值
  if min_num * 2 <= max_num:
    max_range = min_num
  else:
    max_range = int(min_num / 2)

  # 查找公约数,递减循环
  for i in range(max_range, 1, -1):
    if a % i == 0 and b % i == 0:
      return i
  return 0
def main():
  num_in=input().split('/') # 获取输入,拆分为如["1","3 1", "6"]的形式
  a = int(num_in[0]) # 第一个数的分子,即1
  d = int(num_in[2]) # 第二个数的分母,即6
  b, c = map(int, num_in[1].split(' ')) #第一个的分母和第二个的分子
  fenZi = a * d + c * b # 求和公式,分子
  fenMu = b * d # 求和公式,分母
  gcd = GetGcd(fenZi, fenMu) # 求公约数
  if gcd: #若存在公约数,进行约分
    fenZi = int(fenZi / gcd)
    fenMu = int(fenMu / gcd)
  if fenMu == 1: # 分母为1
      print("{0}".format(fenZi))
  else:
      print("{0}/{1}".format(fenZi, fenMu))

exit(main())

2. 提交结果

在这里插入图片描述

三、代码(c)

1. 代码实现

#include <stdio.h>

// 获取公约数
int GetGcd(int a, int b) {
    int min_num, max_num, max_range;

    if (a == b) {
        return a;
    } else if (a < b) {
        min_num = a;
        max_num = b;
    } else {
        min_num = b;
        max_num = a;
    }

    // 获取可能是公约数的最大值
    if (min_num * 2 <= max_num) {
        max_range = min_num;
    } else {
        max_range = min_num / 2;
    }
    // 查找公约数,递减循环
    for (int i = max_range; i > 1; i--) {
        if (a % i == 0 && b % i == 0) {
            return i;
        }
    }
    return 0;
}

int main(void) {
    int a, b, c, d, gcd, fenZi, fenMu;
    if (scanf("%d/%d %d/%d", &a, &b, &c, &d) != 4) {
        return -1;
    }
    fenZi = a * d + c * b;
    fenMu = b * d;
    gcd = GetGcd(fenZi, fenMu);
    if (gcd) {
        fenZi = fenZi / gcd;
        fenMu = fenMu / gcd;
    }
    if (fenMu == 1) {
        printf("%d", fenZi);
    } else {
        printf("%d/%d", fenZi, fenMu);
    }

    return 0;
}

2. 提交结果

在这里插入图片描述

四. 注意事项

  1. python需要将数据转换为整形
  2. 本题未考虑分子分母求和公式结果超出整形的情况

相关推荐

  1. PTA:7-141 加密

    2024-04-28 16:58:02       25 阅读
  2. MYSQL5.7.39 升级到 MYSQL8.0.33

    2024-04-28 16:58:02       35 阅读
  3. STM<span style='color:red;'>32</span> <span style='color:red;'>7</span>-8

    STM32 7-8

    2024-04-28 16:58:02      41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 16:58:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 16:58:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 16:58:02       87 阅读
  4. Python语言-面向对象

    2024-04-28 16:58:02       96 阅读

热门阅读

  1. nvm vscode的问题

    2024-04-28 16:58:02       40 阅读
  2. C++异常

    C++异常

    2024-04-28 16:58:02      27 阅读
  3. 运算符的分类

    2024-04-28 16:58:02       28 阅读
  4. Channel Session架构简介

    2024-04-28 16:58:02       30 阅读
  5. 镜像:数字时代的自我呈现与虚拟重构

    2024-04-28 16:58:02       37 阅读
  6. 字节跳动高频题目(1)

    2024-04-28 16:58:02       27 阅读