版权声明:转载请注明出处 https://blog.csdn.net/qq799028706/article/details/84449368
1. 题意
给你一个数字k,将它转为b进制
转化后的数字如果是回文数输出Yes,不是就输出No
最后一行输出这个转化后的数字
2. 思路
一开始想歪了=。=,想取巧,用了StringBuilder
里的reserver
方法直接翻转判断回文,但是是不可以的
因为如果转为大于10进制的数字,我们得到的数字也会被翻转
大概就是这样的效果
假设输入9843789 99
得到的会是01 41 63 12
所以还是只能老老实实自己去写函数比较回文了!
3. 代码
package adv1019;
import java.util.Scanner;
/**
* @author zmj
* @create 2018/11/24
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int b = in.nextInt();
int[] num = new int[40];
int index = 0;
while (N != 0) {
num[index++] = N % b;
N /= b;
}
if (isPalindromic(num, index)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
for (int i = index-1; i >= 0; i--) {
System.out.print(num[i]);
if (i != 0) {
System.out.print(" ");
}
}
}
public static boolean isPalindromic(int[] num, int index) {
for (int i = 0; i < index / 2; i++) {
if (num[i] != num[index - i - 1]) {
return false;
}
}
return true;
}
}