分数加减法

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

编写一个C程序,实现两个分数的加减法

Input

输入包含多行数据

每行数据是一个字符串,格式是"a/boc/d"。

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束

输入数据保证合法

Output

对于输入数据的每一行输出两个分数的运算结果。

注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

Sample Input

1/8+3/8

1/4-1/2

1/3-1/3

Sample Output

1/2

-1/4

0

题解:同分计算分数的结果然后找分子分母的最大公因子约分化简。注意分子为0以及分子是分母的倍数的时候。

import java.util.*;

public class Main
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
String s;
node a = new node();
while(cin.hasNextLine())
{
s = cin.nextLine();
a.ji(s);
}
cin.close();
}
} class node
{
int a,b,c,d;
void get(String s)
{
a = s.charAt(0) - '0';
b = s.charAt(2) - '0';
c = s.charAt(4) - '0';
d = s.charAt(6) - '0';
}
void ji(String s)
{
int q,w,e;
get(s);
if(s.charAt(3)=='-')
{
w = b * d;
q = a * d - c * b;
}
else
{
w = b * d;
q = a * d + c * b;
}
if(q==0)
System.out.println(0);
else
{
e = gcd(w,q);
if(w/e==1)
System.out.println(q/e);
else
System.out.printf("%d/%d\n",q/e,w/e);
}
}
int gcd(int a,int b)
{
if(a<0)
a = -a;
if(b<0)
b = -b;
return b==0?a:gcd(b,a%b);
}
}

最新文章

  1. Github Pages和Hexo创建静态博客网站
  2. 看看C# 6.0中那些语法糖都干了些什么(中篇)
  3. 【Ngui 学习系列之一:简单组件的操作】
  4. GDC2016 Epic Games【Bullet Train】 新风格的VR-FPS的制作方法
  5. System.exit(0)
  6. JVM类载入过程及主动引用与被动引用
  7. Qt webKit可以做什么(四)--实现本地QObject和JavaScript交互
  8. C++ STL快速入门
  9. Jsp运行环境——Tomcat
  10. [js高手之路] es6系列教程 - Map详解以及常用api
  11. Android,资料分享(2015 版)
  12. n对n
  13. js 高阶函数 闭包
  14. 拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别
  15. onchange 事件
  16. the current differences between MyISAM and InnoDB storage engines
  17. react封装组织架构递归树
  18. FastAdmin 系统配置中添加选项卡
  19. Ubuntu 16.04 LTS安装好之后需要做的15件事
  20. jquery制作一个简单的轮播

热门文章

  1. java内部类和静态内部类
  2. 用canvas 画出圆形图片
  3. java swing多线程
  4. 如何在TypeScript中使用JS类库
  5. CentOS 6.8 Java 环境搭建
  6. UE4物理模块(一)---概述与可视化调试
  7. ML面试1000题系列(31-40)
  8. Poj 2796 单调栈
  9. 机器学习中的那些树——决策树(三、CART 树)
  10. win10下安装mongodb(解压版)