首页 > 试题广场 >

循环数比较

[编程题]循环数比较
  • 热度指数:15529 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
对于任意两个正整数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".
示例1

输入

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");
            }
        }
    }
}
发表于 2023-08-17 10:29:20 回复(0)
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");
            }
        }
    }
}


编辑于 2021-02-23 16:26:04 回复(0)
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        // 获取输入数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] ss = br.readLine().split(" ");

        String x1 = ss[0];
        int k1 = Integer.parseInt(ss[1]);
        String x2 = ss[2];
        int k2 = Integer.parseInt(ss[3]);
        
        System.out.println(repeat(x1, k1, x2, k2));
    }
    
    // 将 x1 重复写 k1 次,将 x2 重复写 k2 次,再比较大小
    private static String repeat(String x1, int k1, String x2, int k2) {
        StringBuilder sb1 = new StringBuilder();
        StringBuilder sb2 = new StringBuilder();
        // 获得 V1 的值
        for (int i = 0; i < k1; i++) {
            sb1.append(x1);
        }
        // 获得 V2 的值
        for (int i = 0; i < k2; i++) {
            sb2.append(x2);
        }
        String str1 = sb1.toString();
        String str2 = sb2.toString();
        int len1 = str1.length();
        int len2 = str2.length();
        
        // 分为两种情况:
        // (1)如果两个字符串的长度不相等,通过两个字符串的长度比较大小;
        // (2)如果两个字符串的长度相等,比较每个位置的数字大小,确定两者大小
        if (len1 < len2) {
            return "Less";
        } else if (len1 > len2) {
            return "Greater";
        } else {// 比较每个位置的数字大小
            for(int i = 0; i < len1; i++){
                if(str1.charAt(i) - '0' > str2.charAt(i) - '0'){
                    return "Greater";
                }else if(str1.charAt(i) - '0' < str2.charAt(i) - '0'){
                    return "Less";
                }
            }
        }
        return "Equal";
    }
}
发表于 2020-09-09 22:27:34 回复(0)
Java   看代码
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");
		}
		

	}

}

发表于 2019-11-05 16:12:54 回复(0)
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");
                }
            }
        }
        
        
    }
}

发表于 2019-09-12 11:57:09 回复(0)
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));
    }
}
发表于 2019-06-14 19:22:19 回复(0)

这种题思路应该很明确,因为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();
}
发表于 2019-05-16 21:19:16 回复(0)
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
    static String repeat(String x,int k)
    {
     String str="";
        int x1=Integer.parseInt(x);
        if(x1<0&&k<0&&x1>Math.pow(10, 9)&&k>50){
            return null;
        }
        for (int i=0;i<k;i++)
            str+=x;
        return str;
    }
    public static void main(String args[])
    {
        String x1,x2;
        int k1,k2;
        Scanner sc=new Scanner(System.in);
        x1=sc.next();
        k1=sc.nextInt();
        x2=sc.next();
        k2=sc.nextInt();
        String s3,s4;
        s3=repeat(x1,k1);
        s4=repeat(x2,k2);
        BigInteger x3,x4;
        x3=new BigInteger(s3);
        x4=new BigInteger(s4);
        if (s3.equals(s4))
            System.out.println("Equal");
        else if(x3.compareTo(x4)>0)
            System.out.println("Greater");
        else if(x3.compareTo(x4)<0)
            System.out.println("Less");
    }
}
发表于 2019-04-10 22:25:46 回复(0)
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");
        }
    }
}

发表于 2019-04-08 09:27:14 回复(0)
import java.util.Scanner;
public class Main
 public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        long x1=sc.nextLong();
        long k1=sc.nextLong();
        long x2=sc.nextLong();
        long k2=sc.nextLong();
        String str1=String.valueOf(x1);
        String str2=String.valueOf(x2);
        String m=new String();
        String n=new String();
    for(int i=0;i<k1;i++)
        m+=str1;
    for(int i=0;i<k2;i++)
        n+=str2;
    int a=m.length();
    int b=n.length();
    if(a>b)
        System.out.print("Greater");
    if(a<b)
        System.out.print("Less");
    if(a==b){
        int t=m.compareTo(n);
        if(t>0)
            System.out.print("Greater");
        if(t<0)
            System.out.print("Less");
        if(t==0)
            System.out.print("Equal");
    }
    }

}

发表于 2019-03-28 17:44:02 回复(0)
import java.math.BigInteger;
import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long x=sc.nextLong();
        long k=sc.nextLong();
        long z=sc.nextLong();
        long y=sc.nextLong();
        String s1=repeat(x, k);
        String s2=repeat(z, y);
        
BigInteger n1=new BigInteger(s1);
BigInteger n2=new BigInteger(s2);

if (n1.compareTo(n2)>0) {
    System.out.println("Greater");
}else if (n1.compareTo(n2)==0) {
    System.out.println("Equal");
}else {
    System.out.println("Less");
}
    
    }
    public static String repeat(long x,long k) {
        String str1=x+"";
        String string = "";
        for (int i = 0; i < k; i++) {
            string=string+str1 ;
        }
    return string;
        
    }
    
}


编辑于 2019-03-24 19:18:15 回复(0)
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;
    }
}

发表于 2019-02-11 18:56:15 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        try(Scanner in = new Scanner(System.in)){
            String s1 = in.next();
            int count1 = in.nextInt();
            String s2 = in.next();
            int count2 = in.nextInt();
            if(s1.length() * count1 > s2.length() * count2) System.out.println("Greater");
            else if(s1.length() * count1 < s2.length() * count2) System.out.println("Less");
            else System.out.println(helper(s1,count1,s2,count2));
        }
    }
    public static String helper(String s1,int count1,String s2,int count2){
        StringBuffer sb1 = new StringBuffer(s1),sb2 = new StringBuffer(s2);
        for(int i = 1;i < count1;i++){
            sb1.append(s1);
        }
        for(int i = 1;i < count2;i++){
            sb2.append(s2);
        }
        String res1 = sb1.toString(),res2 = sb2.toString();
        if(res1.compareTo(res2) < 0) return "Less";
        else if(res1.compareTo(res2) == 0) return "Equal";
        else return "Greater";
    }
}

发表于 2019-01-15 21:05:16 回复(1)