PAT-L1-009 N個數求和
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。
輸入格式:
輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 …”給出N個有理數。題目保證所有分子和分母都在長整型範圍內。另外,負數的符號一定出現在分子前面。
輸出格式:
輸出上述數字和的最簡形式 —— 即將結果寫成“整數部分 分數部分”,其中分數部分寫成“分子/分母”,要求分子小於分母,且它們沒有公因子。如果結果的整數部分為0,則只輸出分數部分。
注意各種負數的情況,和分子為0的情況,以及用long。
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
// InputReader reader = new InputReader();
int n = reader.nextInt();
if (n == 0) {
System.out.println(0);
return;
}
long x = 0;
long y = 0;
for (int i = 0; i < n; i++) {
String[] input = reader.next().split("/");
long a = Long.parseLong(input[0]);
long b = Long.parseLong(input[1]);
if (y != b && y != 0) {
x *= b;
a *= y;
long temp = y * b;
y = temp;
b = temp;
}
// System.out.println(a + "/" + b);
x += a;
y = b;
long gcd = GCD(x, y);
x /= gcd;
y /= gcd;
if (y < 0 && x > 0) {
y = Math.abs(y);
x = x * -1;
}
if (x == 0) {
y = 0;
}
}
long res = 0;
if (y == 0) {
System.out.println(0);
return;
}
if (Math.abs(x) >= Math.abs(y)) {
res = x / y;
x = x % y;
System.out.print(res);
}
if (x == 0) {
return;
}
if (Math.abs(res) > 0) {
System.out.print(" ");
}
System.out.println(x + "/" + y);
}
public static long GCD(long x, long y) {
return y == 0 ? x : GCD(y, x % y);
}
}
相關文章
- L1-009 N個數求和
- 輸入N,再輸入N個數,N
- 本題要求統計給定整數M和N區間內素數的個數並對它們求和。
- 2數求和
- 坑很多的一道題(含測試樣例)——L1-009 N個數求和 (20分)
- n個骰子的點數
- 2032 奇數求和
- 3070 n個整數“打擂臺”
- Nth Digit 第N個數字Git
- 指標-n個數的排序指標排序
- 三個求和公式公式
- 偶數求和 hd 2015
- 連續自然數求和
- 3069 求n個整數的和
- 統計整數區間[N,M](N,M<100000)中所以非偶數的合數個數,並輸出這個數。
- 2022-07-17:1、2、3...n-1、n、n、n+1、n+2... 在這個序列中,只有一個數字有重複(n)。 這
- 給定一個n,輸出從1到n的整數
- JZ-074-n 個骰子的點數
- 單連結串列逆位表示的 2 個整數求和
- 用Python解決一個等差數列的求和問題Python
- python輸入兩個數進行求和的方法是什麼?Python
- 等比數列求和技巧(公式+倍增)公式
- 演算法分析__級數求和演算法
- LeetCode 1137[第N個泰波那契數]LeetCode
- CSS 倒數第n個li元素樣式CSS
- LeetCode 1137第N個斐波那契數LeetCode
- linux echo命令的-n、-e兩個引數Linux
- LeetCode878. 第 N 個神奇數字(java)LeetCodeJava
- 洗牌演算法擴充(從n個數中隨機m個數)演算法隨機
- 杭電OJ 2028求n個數的最小公倍數
- 劍指offer:輸入n個整數,找出其中最小的K個數。
- 對N個數進行從大到小排序排序
- 數列求和【線段樹基礎】
- 寫一個方法,傳入數字x,從一個一維陣列裡找到兩個數字符合“n1 + n2 = x”陣列
- 1304 和為零的N個唯一整數
- L1-050 倒數第N個字串 (15分)字串
- 166. 連結串列倒數第n個節點
- 【進階】數論函式求和(理論)函式