2021米哈游校园招聘-提前批-编程题1-最简分式

简介: 2021米哈游校园招聘-提前批-编程题1-最简分式

输入一个字符串"a/b o c/d"

其中o为"+ - * /"中的一个

输出运算结果,且为最简分式*`

#include <iostream>
#include <string>
using namespace std;
//求最大公约数
int subMax(int x, int y)
{
  int z = 0;
  if (x < y)
  {
    int t = x;
    x = y;
    y = t;
  }
  //辗转相除法
  while (y != 0)
  {
    z = x % y;
    x = y;
    y = z;
  }
  return x;
}
int main()
{
  string str;
  while (getline(cin, str))
  {
    //四种运算符讨论
    int fenzi, fenzi2, fenmu, fenmu2, yueshu, yueshu2;
    switch (str[4])
    {
    case '+':
      //分母相同,不通分
      if (str[2] == str[8])
      {
        int a = (str[0] - '0') + (str[6] - '0');
        int b = str[2] - '0';
        int c = subMax(a, b);
        cout << a / c << "/" << b / c << endl;
      }
      else
      {
        //分母不同,通分
        int btemp = str[2] - '0';
        int dtemp = str[8] - '0';
        int k1 = subMax(btemp, dtemp);//最大公约数
        int k2 = btemp * dtemp / k1;//最小公倍数
        int atemp = str[0] - '0';
        int ctemp = str[6] - '0';
        int fenz = k2 / dtemp * atemp + k2 / btemp * ctemp;
        int yues = subMax(fenz, k2);
        cout << fenz / yues << "/" << k2 << endl;
      }
      break;
    case '-':
      //分母相同,不通分
      if (str[2] == str[8])
      {
        int a, c; 
        int b = str[2] - '0';
        if ((str[0] - '0') < (str[6] - '0'))
        {
          a = (str[6] - '0') - (str[0] - '0');
          c = subMax(a, b);
          cout << "-" << a / c << "/" << b / c << endl;
        }
        else
        {
          a = (str[0] - '0') - (str[6] - '0');
          c = subMax(a, b);
          cout << a / c << "/" << b / c << endl;
        }
      }
      else
      {
        //分母不同,通分
        int flag = 0;
        int btemp = str[2] - '0';
        int dtemp = str[8] - '0';
        int k1 = subMax(btemp, dtemp);//最大公约数
        int k2 = btemp * dtemp / k1;//最小公倍数
        int atemp = str[0] - '0';
        int ctemp = str[6] - '0';
        int fenz = k2 / btemp * atemp - k2 / dtemp * ctemp;
        if (fenz < 0)
        {
          fenz = -fenz;
          flag = 1;
        }
        int yues = subMax(fenz, k2);
        if (flag == 1)
        {
          cout << "-" << fenz / yues << "/" << k2 << endl;
        }
        else
        {
          cout << fenz / yues << "/" << k2 << endl;
        }
      }
      break;
    case '*':
      fenzi = (str[0] - '0') * (str[6] - '0');
      fenmu = (str[2] - '0') * (str[8] - '0');
      yueshu = subMax(fenzi, fenmu);
      cout << fenzi / yueshu << "/" << fenmu / yueshu << endl;
      break;
    case '/':
      fenzi2 = (str[0] - '0') * (str[8] - '0');
      fenmu2 = (str[2] - '0') * (str[6] - '0');
      yueshu2 = subMax(fenzi2, fenmu2);
      cout << fenzi2 / yueshu2 << "/" << fenmu2 / yueshu2 << endl;
      break;
    }
  }
  return 0;
}


相关文章
|
11月前
|
网络协议 NoSQL 算法
|
2月前
|
SQL 机器学习/深度学习 前端开发
10个宝藏级编程资源,让你省下8K学费不香吗_类似javaguide的前端网站
10个宝藏级编程资源,让你省下8K学费不香吗_类似javaguide的前端网站
10个宝藏级编程资源,让你省下8K学费不香吗_类似javaguide的前端网站
|
2月前
|
前端开发 大数据 数据库
临时抱佛脚必看|一个月速通高级系统架构设计师!(低分飘过版)
本文写给已决定报考高级软件架构设计师的同学,从软考报名到正式考试,有40天时间,本文纯应试备考经验,一个月速成,仅供参考。
107 0
|
2月前
|
数据采集 NoSQL 搜索推荐
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
|
2月前
|
新能源 图形学
两千字——零基础开始打化工设计大赛——附搜集到的小白资料站、一次项目复盘
两千字——零基础开始打化工设计大赛——附搜集到的小白资料站、一次项目复盘
52 0
|
2月前
|
JavaScript 小程序 Java
基于Java的高校实习管理系统设计与实现(亮点:实习记录、实习打分、实习作业,功能新颖、老师没见过、当场唬住!)
基于Java的高校实习管理系统设计与实现(亮点:实习记录、实习打分、实习作业,功能新颖、老师没见过、当场唬住!)
75 0
|
11月前
|
BI UED
如何开发自主体育直播足球竞猜系统?说难不难,做好这三步就行了
随着网络技术的发展,体育直播已经成为人们观看体育比赛的主要方式之一。对于想要开发自主体育直播系统的企业或个人来说,以下三步是必须要做的。
|
监控 算法 数据可视化
数据营销三部曲(第一部)
毋庸置疑,数字化、智能化势不可逆,数据正在且加速成为经济、生产、经营活动的基本要素,我想这也是为什么中国政府一直在不遗余力的推动行业和企业数字化转型的根本原因。 在企业的成长和发展过程中,营销起着至关重要的作用。数字化和智能化的大趋势下,不可否认,企业营销也正在发生根本性的改变,基于假设和直觉的传统营销方法正在老去和逝去,企业开始逐渐转向求助或利用最可靠的信息:数据,客户或用户数据。“数据营销(Data Marketing)” 或 “数据驱动的营销(Data-Driven Marketing)”也随之产生。在此,我将尝试用尽可能简单的方式去谈谈我个人对数据营销的理解和看法。
99 0
|
人工智能 分布式计算 网络协议
【个人百度一面】----Java后端开发岗位----【校招提前批】
【个人百度一面】----Java后端开发岗位----【校招提前批】
109 0
【个人百度一面】----Java后端开发岗位----【校招提前批】
|
搜索推荐
鹅厂同学:7 月开始不再进行薪酬调整?
2022 年的互联网,一天天的,真是好多事。5 月 31 日有脉脉网友放出了一则**《关于薪酬回顾有关调整的通知》的腾讯内部邮件**,大体的内容是说不再单独针对职级晋升做即时的薪酬调整。
130 1
鹅厂同学:7 月开始不再进行薪酬调整?