回文平方

题目描述

回文数是指数字从前往后读和从后往前读都相同的数字。

例如数字 12321 就是典型的回文数字。

现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B进制后,其 B 进制表示是回文数字。

输入格式

一个整数 B。

输出格式

每行包含两个在B 进制下表示的数字。

第一个表示满足平方值转化为 B进制后是回文数字那个数,第二个数表示第一个数的平方。

所有满足条件的数字按从小到大顺序依次输出。

这一题主要考:十进制转化成其他进制:短除法

在判断回文数时,我用到了

StringBuilder里面的方法---翻转函数 sb = sb.reverse();

要注意的是---当余数大于9时 要用英文字母来表示,所以写一个判断语句

if (temp>9){
  str =(char)(65+(temp-10)) +  str;
}else str = temp+str;

以下是我的代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int b = sc.nextInt();

        for (int i = 1; i < 300; i++) {
            String str = getString(b, i*i);
            String str1 = getString(b, i);
            StringBuilder sb = new StringBuilder(str);
            StringBuilder sb1 = new StringBuilder(str1);
            sb = sb.reverse();
            String result = sb.toString();
            String result1 = sb1.toString();
            if (str.equals(result)){
                System.out.println(result1 + " " + str);
            }

        }

    }

    private static String getString(int b, int i) {
        String str = "";

        while (i>0){
             int temp = i% b;

             if (temp>9){
               str =(char)(65+(temp-10)) +  str;
             }else str = temp+str;

           i = i/ b;
        }
        return str;

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值