PAT 甲级 1019 General Palindromic Number [Java实现]

版权声明:转载请注明出处 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;
    }

}

猜你喜欢

转载自blog.csdn.net/qq799028706/article/details/84449368
今日推荐