关注
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);
}
}
查看原帖
点赞 评论
相关推荐
投递叠纸游戏等公司9个岗位 >
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
505465次浏览 8734人参与
# 如何判断面试是否凉了 #
900024次浏览 13884人参与
# 最后再改一次简历 #
766671次浏览 10898人参与
# 春招你拿到offer了吗 #
335790次浏览 5032人参与
# 硬件/芯片公司工作体验 #
15250次浏览 225人参与
# 写简历别走弯路 #
268886次浏览 3288人参与
# 快手工作体验 #
47525次浏览 899人参与
# 学历贬值真的很严重吗? #
2013次浏览 31人参与
# 通信硬件人笔面经互助 #
90327次浏览 1855人参与
# 实习,投递多份简历没人回复怎么办 #
892104次浏览 15941人参与
# 我的上岸简历长这样 #
147672次浏览 2965人参与
# 现在还是0offer,延毕还是备考 #
335489次浏览 4334人参与
# 简历中的项目经历要怎么写 #
399056次浏览 6685人参与
# 找不到好工作选择GAP真的丢人吗 #
11726次浏览 111人参与
# 运营面经 #
6646次浏览 181人参与
# 我想象的工作vs实际工作 #
81550次浏览 1423人参与
# 国企和大厂硬件兄弟怎么选? #
31970次浏览 643人参与
# 实习与准备秋招该如何平衡 #
156763次浏览 2934人参与
# 你们的毕业论文什么进度了 #
513084次浏览 5356人参与
# 许愿池 #
70837次浏览 1511人参与