【还没抄懂】有理数四则运算(20)
有理数四则运算(20)
https://www.nowcoder.com/questionTerminal/c0e43b08b87f4f93bec7ab215e1aa60b
import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] strs = br.readLine().split(" "); String[] val0 = strs[0].split("/"); String[] val1 = strs[1].split("/"); int a0 = Integer.parseInt(val0[0]); int b0 = Integer.parseInt(val0[1]); int a1 = Integer.parseInt(val1[0]); int b1 = Integer.parseInt(val1[1]); String A = toStr(a0, b0); String B = toStr(a1, b1); //加 int b = b0*b1; int a = a0*b1 +a1*b0; String add = toStr(a, b); System.out.println(A+" + "+B+" = "+add); // reduce a = a0 * b1 - a1 * b0; String reduce = toStr(a, b); System.out.println(A+" - "+B+" = "+reduce); // multiply a = a0 * a1; String mult = toStr(a,b); System.out.println(A+" * "+B+" = "+mult); // divide a = a0 * b1; b = b0 * a1; String div = toStr(a,b); System.out.println(A+" / "+B+" = "+div); } private static String toStr(int a, int b){ if(a == 0) return "0";//分子为0,则结果为0 if(b == 0) return "Inf";//分母为0,无意义 StringBuilder sb = new StringBuilder(); //求符号 boolean flag = false;//是否是负数 if(a < 0){ flag = true;//是负数 a = -a; } if(b < 0){ flag = !flag;//在原来的基础上求反 b = -b; } if(flag){ //如果是负数,加上负号 sb.append("(-"); } int c = getYuefen(a, b); a /= c; b /= c; int beishu = a / b; a = a%b; if(beishu != 0){ sb.append(beishu); if(a != 0){ sb.append(" ").append(a).append("/").append(b); } }else{ sb.append(a).append("/").append(b); } if(flag){ sb.append(")"); } return sb.toString(); } //把分数化成最简分数的过程就叫约分 private static int getYuefen(int a, int b){ if( a%b == 0){ return b;//能被整除 } return getYuefen(b , a%b); } }
PAT乙级 文章被收录于专栏
做题记录