两个有理数的和
来源:互联网 发布:无线网址域名注册 编辑:程序博客网 时间:2024/05/01 07:27
输入格式:
输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
String str1 = in.next();
int count = 0; // 表示找到str的/在什么位置
int count1 = 0;
/**
* 找分子分母,因为分子分母都有可能是多位数
*/
for (int i = 0; i < str.length(); i++) {
if (str.substring(i, i + 1).equals("/"))
count = i;
}
String s = str.substring(0, count); // 表示分子
String s1 = str.substring(count + 1, str.length()); // 表示分母
for (int i = 0; i < str1.length(); i++) {
if (str1.substring(i, i + 1).equals("/"))
count1 = i;
}
String st = str1.substring(0, count1); // 表示分子
String st1 = str1.substring(count1 + 1, str1.length()); // 表示分母
int num = 0;
/**
* 如果两个分母相等,就直接把分子相加,如果不相等,找最小公倍数,然后小的那个分子分母同时乘 公约数/小的那个
*/
if (s1.equals(st1)) { // 分母相等
int z = Integer.parseInt(s);
int z1 = Integer.parseInt(st);
int fenzi = z + z1;
int fenmu = Integer.parseInt(s1);
if (fenzi % fenmu == 0) {
System.out.println(fenzi / fenmu);
} else {
System.out.println(fenzi + "/" + fenmu);
}
} else { // 分母不相等
int f = Integer.parseInt(s1);
int f1 = Integer.parseInt(st1);
int ff = f;
int ff1 = f1;
while (true) {
if (f <= f1) {
f += ff; // 这里的f已经变了,所以要下面重新定义
} else
f1 += ff1;
if (f == f1) {
num = f1; // num是不相等分母的最小公倍数
break;
}
}
/**
* 这一步开始试小的那个分子分母同乘最小公倍数/小的那个数
*/
int f2 = Integer.parseInt(s1);
int f3 = Integer.parseInt(st1);
int zz = Integer.parseInt(s);
int zz1 = Integer.parseInt(st);
int fff = num / f2; // 表示最小公倍数/f
int zzz = zz * fff;
int fff1 = num / f3;
int zzz1 = zz1 * fff1;
if (((zzz + zzz1) % num == 0)) {
System.out.println((zzz + zzz1) / num);
} else {
/**
* 这一步是将分子分母约分了
*/
for (int i = num; i >= 1; i--) {
if ((zzz + zzz1) % i == 0 && num % i == 0) {
System.out.println((zzz + zzz1) / i + "/" + num / i);
break;
}
}
}
}
in.close();
}
}
- 两个有理数的和
- 用结构计算两个有理数的和。
- 【有理数】的定义和实现
- 有理数和无理数
- 抽象数据类型复数和有理数的代码实现
- 有理数的抽象数据类型
- Java有理数的四则运算
- 有理数的个数
- 有理数的加减乘除
- 有理数的加减乘除
- 有理数的四则运算
- 有理数
- Chapter06--有理数和评委评分
- 有理数的四则运算 C、java
- Lisp实现有理数的运算
- 蓝桥杯 有理数的循环节
- 有理数的性质及应用
- sort 与有理数的个数
- 【洛谷P1006】 传纸条
- java synchronized关键字的用法以及锁的等级:对象锁、类锁
- python中集合类型创建、更新、删除、修改以及操作符使用实例代码
- Kingbase金仓数据库工程维护简明手册
- Python 爬取网页内容,转成PDF
- 两个有理数的和
- Notification-通知栏
- android-Activity 的启动模式和标记位
- openstack, kvm, qemu-kvm以及libvirt之关系
- 浅谈C#ref和out
- vs下的debug和release版本的区别
- 分针网—IT教育: Html / CSS常见问题的解决方案
- 如何取消IE“已限制此网页运行可以访问计算机的脚本或ActiveX控件”
- linux命令之head