回文数(洛谷1015)java
时间: 2023-11-04 13:55:27 浏览: 49
回文数是指正读和反读都相同的数,例如121、1221等。在给定一个N进制数M的情况下,你需要写一个程序来计算最少经过几步可以得到回文数。这个程序的实现方法是将M转换为十进制数,然后将M与它的反转数相加,再判断是否为回文数。如果在30步以内(包含30步)无法得到回文数,则输出"Impossible!"。下面是一个Java的实现示例:
```java
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String number = scanner.next();
for (int i = 1; i <= 30; i++) {
String reverse = new StringBuilder(number).reverse().toString();
BigInteger integer = new BigInteger(number, n).add(new BigInteger(reverse, n));
if (check(number = integer.toString(n))) {
System.out.println("STEP=" + i);
return;
}
}
System.out.println("Impossible!");
}
private static boolean check(String arg) {
char[] chars = arg.toCharArray();
int left = 0, right = chars.length - 1;
while (right - left >= 1)
if (chars[left++] != chars[right--])
return false;
return true;
}
}
```