关注
package go.jacob.day822;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] strs = new String[n];
//三个数分别为分子,分母,带分数的整数部分
int numerator = 0, denominator = 0, first = 0;
for (int i = 0; i < n; i++)
strs[i] = sc.next();
sc.close();
for (int i = 0; i < n; i++) {
int flag = 1, begin = 0;
if (strs[i].charAt(0) == '-') {
flag = -1;
begin = 1;
}
int tmpNumerator = flag * Integer.parseInt(strs[i].substring(begin, strs[i].indexOf("/")));
int tmpDenominator = Integer.parseInt(strs[i].substring(strs[i].indexOf("/") + 1));
if (tmpDenominator == 0)
return;
if (i == 0) {
numerator = tmpNumerator;
denominator = tmpDenominator;
} else {
numerator = numerator * tmpDenominator + tmpNumerator * denominator;
denominator *= tmpDenominator;
}
// 使用欧几里得算法求最大公约数,每次计算都要对分数进行化简,放置溢出
int factor = gcd(numerator, denominator);
if (factor == 0) {
System.out.println(0);
return;
}
numerator /= factor;
denominator /= factor;
}
// 把假分数化成带分数
first += numerator / denominator;
numerator = numerator % denominator;
// 输出结果的时候要判断:整数部分是否为0?分子书否为0?
if (first != 0)
if (numerator != 0)
System.out.println(first + " " + numerator + "/" + denominator);
else
System.out.println(first);
else if (numerator != 0)
System.out.println(numerator + "/" + denominator);
else
System.out.println(0);
}
private static int gcd(int a, int b) {
if (a == 0)
return 0;
if (a < 0)
a = -a;
if (b < 0)
b = -b;
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
09-05 21:45
蚌埠坦克学院 C++
用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈 点赞 评论 收藏
分享
苦也:佬投的是日常实习吗,是在官网投的吗,我也想找段实习沉淀一下,投了根本没消息
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 帮我看看,领导说这话什么意思? #
15826次浏览 87人参与
# 牛友的志愿填报指南 #
33591次浏览 180人参与
# 快手技术岗信息交流阵地 #
145次浏览 0人参与
# 你的mentor是什么样的人? #
12518次浏览 97人参与
# 毕业租房也有小确幸 #
140295次浏览 4491人参与
# 怎么给家人解释你的工作? #
7684次浏览 57人参与
# 得物app工作体验 #
27197次浏览 61人参与
# 租房前辈的忠告 #
259235次浏览 7114人参与
# 国企还是互联网,你怎么选? #
167665次浏览 1192人参与
# 求职中的尴尬瞬间 #
1708次浏览 25人参与
# 小红书求职进展汇总 #
120611次浏览 952人参与
# 薪资爆料 #
200107次浏览 1512人参与
# 校招泡的最久的公司是哪家? #
10285次浏览 66人参与
# 求职低谷期你是怎么度过的 #
10266次浏览 199人参与
# 26届秋招公司红黑榜 #
24343次浏览 88人参与
# 从哪些方向判断这个offer值不值得去? #
12978次浏览 161人参与
# 度小满求职进展汇总 #
11921次浏览 64人参与
# 你觉得mentor喜欢什么样的实习生 #
14884次浏览 392人参与
# 牛客树洞,我想对你说 #
4350次浏览 64人参与
# 还记得你第一次面试吗? #
340078次浏览 3876人参与
# 机械人的秋招小目标 #
22607次浏览 217人参与