循环数比较
题目:
对于任意两个正整数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
前言
继续加油吧
思路
思路其实很简单,将两个数表示出来并进行比较就可以了
其中x1和x2因为数值比较大, 需要用String 类型来接收,再用StringBuilder将完整的数表示出来
比较两个数时,要用到BigInteger类
BigInteger类中有个方法是compareTo(BigInteger val) 将此BigInteger与指定的BigInteger进行比较。小于返回-1,等于返回0,大于返回1
代码
package mianshiti;
import java.math.BigInteger;
import java.util.Scanner;
public class mianshiti14 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
String x1=scan.next();
int k1=scan.nextInt();
String x2=scan.next();
int k2=scan.nextInt();
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);
}
BigInteger b1=new BigInteger(sb1.toString());
BigInteger b2=new BigInteger(sb2.toString());
if(b1.compareTo(b2)==0) {
System.out.println("Equal");
}else if(b1.compareTo(b2)<0) {
System.out.println("Less");
}else {
System.out.println("Greater");
}
}