摘要:本題要求編寫程序,計算個有理數的和差積商。輸出格式分別在行中按照有理數運算符有理數結果的格式順序輸出個有理數的和差積商。注意輸出的每個有理數必須是該有理數的最簡形式,其中是整數部分,是最簡分數部分若為負數,則須加括號若除法分母為,則輸出。
本題要求編寫程序,計算 2 個有理數的和、差、積、商。
輸入格式:
輸入在一行中按照 a1/b1 a2/b2 的格式給出兩個分數形式的有理數,其中分子和分母全是整型范圍內的整數,負號只可能出現在分子前,分母不為 0。
輸出格式:
分別在 4 行中按照 有理數1 運算符 有理數2 = 結果 的格式順序輸出 2 個有理數的和、差、積、商。注意輸出的每個有理數必須是該有理數的最簡形式 k a/b,其中 k 是整數部分,a/b 是最簡分數部分;若為負數,則須加括號;若除法分母為 0,則輸出 Inf。題目保證正確的輸出中沒有超過整型范圍的整數。
輸入樣例 1:
2/3 -4/2
輸出樣例 1:
2/3 + (-2) = (-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)
輸入樣例 2:
5/3 0/6
輸出樣例 2:
1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf
Think
做除法運算時先要判斷分母。
code
import java.io.*; public class Main { //輾轉相除法 private static long GCD(long a,long b) { return b == 0 ? a : GCD(b , a % b); } //相加 private static String calculate(long a,long b) { if(b == 0) { return "Inf"; } long gcd,t,x; gcd = GCD(Math.abs(a), b); //最大公約數 //簡化 a = a / gcd; b = b / gcd; t = Math.abs(a) / b; //整數 x = Math.abs(a) - t * b;//分子 if(t == 0 && x == 0) { return "0"; } if(a < 0) { if(t != 0 && x != 0) return "(-"+t+" "+x+"/"+b+")"; if(t != 0 && x == 0) return "(-"+t+")"; if(t == 0 && x != 0) return "(-"+x+"/"+b+")"; } else { if (t != 0 && x != 0) return t+" "+x+"/"+b; if(t != 0 && x == 0) return String.valueOf(t); if(t == 0 && x != 0) return x+"/"+b; } return null; } public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); String[] istr = in.readLine().split(" "); String[] a = istr[0].split("/"), b = istr[1].split("/"); long a1 = Long.parseLong(a[0]), a2 = Long.parseLong(b[0]); long b1 = Long.parseLong(a[1]), b2 = Long.parseLong(b[1]); String A,B; A = calculate(a1,b1); B = calculate(a2,b2); out.println(A + " + " + B + " = " + calculate(a1*b2+a2*b1,b1*b2)); out.flush(); out.println(A + " - " + B + " = " + calculate(a1*b2-a2*b1,b1*b2)); out.flush(); out.println(A + " * " + B + " = " + calculate(a1*a2,b1*b2)); out.flush(); out.print(A + " / " + B + " = "); out.flush(); if(a2 < 0) { out.print(calculate(a1 * b2 * a2 / Math.abs(a2) , b1 * Math.abs(a2))); } else { out.print(calculate(a1 * b2 , b1 * a2)); } out.flush(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77449.html
摘要:中的運算符按功能劃分主要分類。算術運算符的優先級浮點數比較在中,一般不建議直接比較兩個浮點數是否相等。還有與二元運算符相結合的賦值運算符。與二元運算符相結合的賦值運算符有其運算即為先兩者進行二元操作再賦值給前者。 java中的運算符按功能劃分主要分7類。 算術運算符 +, -, *, /, ++, --, % 關系運算符 =, ==, != 布爾邏輯運算符 &&, &, |...
摘要:本文首發于深入淺出區塊鏈社區原文鏈接智能合約語言教程系列地址類型介紹原文已更新,請讀者前往原文閱讀現在的中文文檔,要么翻譯的太爛,要么太舊,決定重新翻譯下。枚舉類型應至少有一名成員。 本文首發于深入淺出區塊鏈社區原文鏈接:智能合約語言 Solidity 教程系列2 - 地址類型介紹原文已更新,請讀者前往原文閱讀 現在的Solidity中文文檔,要么翻譯的太爛,要么太舊,決定重新翻譯下。...
摘要:上一篇文章標準庫內置類型邏輯值檢測布爾運算比較下一篇文章標準庫內置類型迭代器類型序列類型數字類型存在三種不同的數字類型整數浮點數和復數。標準庫包含附加的數字類型,如表示有理數的以及以用戶定制精度表示浮點數的。 上一篇文章:Python標準庫---9、內置類型:邏輯值檢測、布爾運算、比較下一篇文章:Python標準庫---11、內置類型:迭代器類型、序列類型 數字類型 --- int,...
摘要:示例有理數的算術有理數可表示為整數的比值,并且它組成了實數的一個重要子類。有理數的值需要兩部分來描述。這里的重要概念是,通過將有理數表示為整數的比值,我們能夠完全避免近似問題。返回有理數的分子。 2.2 數據抽象 來源:2.2 Data Abstraction 譯者:飛龍 協議:CC BY-NC-SA 4.0 由于我們希望在程序中表達世界中的大量事物,我們發現它們的大多數都具有...
摘要:使用消息傳遞,我們就能使抽象數據類型直接擁有行為。構造器以類似的方式實現它在參數上調用了叫做的方法。抽象數據類型允許我們在數據表示和用于操作數據的函數之間構造界限。 2.7 泛用方法 來源:2.7 Generic Operations 譯者:飛龍 協議:CC BY-NC-SA 4.0 這一章中我們引入了復合數據類型,以及由構造器和選擇器實現的數據抽象機制。使用消息傳遞,我們就能...
閱讀 3684·2021-10-09 09:44
閱讀 3349·2021-09-22 15:29
閱讀 3117·2019-08-30 15:54
閱讀 3018·2019-08-29 16:19
閱讀 2142·2019-08-29 12:50
閱讀 595·2019-08-26 14:04
閱讀 1696·2019-08-23 18:39
閱讀 1345·2019-08-23 17:59