对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.
牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。
输入包括一行,一行中有4个正整数x1, k1, x2, k2(1 ≤ x1,x2 ≤ 10^9, 1 ≤ k1,k2 ≤ 50),以空格分割
如果v1小于v2输出"Less",v1等于v2输出"Equal",v1大于v2输出"Greater".
1010 3 101010 2
Equal
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String line = in.nextLine(); //获取整行 String[] input = line.split(" "); //分割 //获取输入 String x1 = input[0]; int k1 = Integer.parseInt(input[1]); String x2 = input[2]; int k2 = Integer.parseInt(input[3]); //拼接后的字符串 StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); //字符串拼接 for (int i = 0; i < k1; i++) { sb1.append(x1); } for (int i = 0; i < k2; i++) { sb2.append(x2); } //先从长度开始比较 if (sb1.length() < sb2.length()) { System.out.println("Less"); } else if (sb1.length() > sb2.length()) { System.out.println("Greater"); } else { //长度相等时,比较每一位的大小,从高位开始比较 boolean flag = false; for (int i = 0; i < sb1.length(); i++) { if (sb1.charAt(i) < sb2.charAt(i)) { System.out.println("Less"); flag = true; break; } else if (sb1.charAt(i) > sb2.charAt(i)) { System.out.println("Greater"); flag = true; break; } } if (!flag) { System.out.println("Equal"); } } } }
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String []args) { Scanner input = new Scanner(System.in); String a = input.nextLine(); String[] array = a.split(" "); if(array.length != 4) { System.out.println("输入不合法! " + array.length); } else { StringBuilder sb1 = new StringBuilder(); int k1 = Integer.valueOf(array[1]); for (int i=0; i< k1; i++) { sb1.append(array[0]); } StringBuilder sb2 = new StringBuilder(); int k2 = Integer.valueOf(array[3]); for (int i=0; i< k2; i++) { sb2.append(array[2]); } BigInteger v1 = new BigInteger(sb1.toString()); BigInteger v2 = new BigInteger(sb2.toString()); int num = v1.compareTo(v2); if (num < 0) { System.out.println("Less"); } else if (num == 0) { System.out.println("Equal"); } else if (num > 0) { System.out.println("Greater"); } } } }
import java.util.*; import java.math.BigDecimal; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin=new Scanner (System.in); long x1=cin.nextLong(); int k1=cin.nextInt(); long x2=cin.nextLong(); int k2=cin.nextInt(); String s=""; String str1=String.valueOf(x1)+s; String str2=String.valueOf(x2)+s; for(int i=2;i<=k1;i++) { str1=str1+String.valueOf(x1)+s; } for(int i=2;i<=k2;i++) { str2=str2+String.valueOf(x2)+s; } BigDecimal big1 = new BigDecimal(str1); BigDecimal big2 = new BigDecimal(str2); int f=big1.compareTo(big2); if(f>0) { System.out.print("Greater"); } else if(f==0) { System.out.print("Equal"); } else { System.out.print("Less"); } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int x1 = in.nextInt(); int k1 = in.nextInt(); int x2 = in.nextInt(); int k2 = in.nextInt(); String str1 = String.valueOf(x1); char[] chs1 = str1.toCharArray(); String str2 = String.valueOf(x2); char[] chs2 = str2.toCharArray(); int n1 = chs1.length; int n2 = chs2.length; if(n1*k1 > n2*k2){ System.out.println("Greater"); }else if(n2*k2 > n1*k1){ System.out.println("Less"); }else{ int j =0; for(int i =0;i<n1;i++){ if(chs1[i] > chs2[j]){ System.out.println("Greater"); break; }else if(chs1[i] < chs2[j]){ System.out.println("Less"); break; } j++; if(i==n1-1){ if(--k1!=0){ i=-1; } } if(j==n2){ if(--k2!=0){ j=0; } } if(k1==0 && k2==0){ System.out.println("Equal"); } } } } }
import java.util.Scanner; public class Main { public static String process(int x1, int k1, int x2, int k2) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); while (k1-- > 0) { sb1.append(x1); } while (k2-- > 0) { sb2.append(x2); } if (sb1.toString().length() > sb2.toString().length()) { return "Greater"; } else if (sb1.toString().length() < sb2.toString().length()) { return "Less"; } for (int i = 0; i < sb1.toString().length(); i++) { if (sb1.toString().charAt(i) > sb2.toString().charAt(i)) { return "Greater"; } else if (sb1.toString().charAt(i) < sb2.toString().charAt(i)) { return "Less"; } } return "Equal"; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x1 = sc.nextInt(); int k1 = sc.nextInt(); int x2 = sc.nextInt(); int k2 = sc.nextInt(); System.out.println(process(x1, k1, x2, k2)); } }
这种题思路应该很明确,因为1 ≤ x1,x2 ≤ 10^9
限制,所以需要用字符串来操作:
private static String solution(int x1, int k1, int x2, int k2) { String v1 = repeat(x1, k1); String v2 = repeat(x2, k2); int l1 = v1.length(), l2 = v2.length(); if (l1 < l2) return "Less"; if (l1 > l2) return "Greater"; for (int i = 0; i < l1; i++) { if (v1.charAt(i) > v2.charAt(i)) { return "Greater"; } if (v1.charAt(i) < v2.charAt(i)) { return "Less"; } } return "Equal"; } static String repeat(int x, int k) { StringBuilder res = new StringBuilder(); for (int i = 0; i < k; i++) { res.append(x); } return res.toString(); }
import java.math.BigInteger; import java.util.Scanner; public class Main { //使用BigInteger,避免出现大整数使得运行报错 public static BigInteger repeat(long x, long k) { String s = String.valueOf(x); StringBuilder sb = new StringBuilder(); for (int i = 0; i < k; i++) { sb.append(s); } return new BigInteger(sb.toString()); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x1 = sc.nextInt(); int k1 = sc.nextInt(); int x2 = sc.nextInt(); int k2 = sc.nextInt(); BigInteger v1 = repeat(x1,k1); BigInteger v2 = repeat(x2,k2); int i = v1.compareTo(v2); if (i == -1) { System.out.println("Less"); } else if (i == 0) { System.out.println("Equal"); } else { System.out.println("Greater"); } } }
import java.util.Scanner;
}
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x1,k1,x2,k2; x1 = sc.nextInt(); k1 = sc.nextInt(); x2 = sc.nextInt(); k2 = sc.nextInt(); String num1 = String.valueOf(x1); String num2 = String.valueOf(x2); String resNum1 = ""; String resNum2 = ""; while(k1-- > 0){ resNum1 += num1; } while(k2-- > 0){ resNum2 += num2; } if(compareTo(resNum1,resNum2) > 0){ System.out.println("Greater"); }else if(compareTo(num1,num2) == 0){ System.out.println("Equal"); }else{ System.out.println("Less"); } } private static int compareTo(String num1, String num2) { if(num1.length() != num2.length()){ return num1.length()>num2.length()?1:-1; } char[] num1Array = num1.toCharArray(); char[] num2Array = num2.toCharArray(); for(int i = 0;i < num1Array.length;i++){ if(num1Array[i] != num2Array[i]){ return num1Array[i]>num2Array[i]?1:-1; } } return 0; } }