华为上机:对数计数器

对数计数器
描述:

小明在使用一个计数器,计数范围0~999999,小明第一次看计数器的时候,其读数为一个对数(即正反读是一样的,如12321),当出现下一个对数的时候,小明停止了计数。
输入小明看到的第一个对数,请输出计数数量(即第二个对数跟第一个对数的差值)。注意,计数器达到999999后,会重新从0开始。

运行时间限制: 无限制
内存限制: 无限制
输入:

输入一个整数0~999999

输出:

输出计数数量,非负整数

样例输入:
123321
样例输出:
1100

直接计算

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            int x = in.nextInt();
            int count = getCount(x);
            System.out.println(count);
        }
        
        in.close();
    }
    public static int getCount(int num){
        int count = 0;
        while(num<=999999){
            num++;
            if(num==1000000){
                num=0;
                count++;
                break;
            }
            if(!isPail(num)){
                count++;
            }else{
                count++;
                break;
            }
        }
        return count;
    }
    public static boolean isPail(int num){
        if(num<=9)
            return true;
        int p = 1;
        int x = num;
        while(x>9){
            x/=10;
            p*=10;
        }
        while(num>=10){
            int l = num/p;
            int r = num%10;
            if(l!=r)
                return false;
            num%=p;// 去除第一位数
            num/=10;// 去除最好一位数
            p=p/100;
        }
        return true;
    }
}

这个应该可以找出来规律的

原文地址:https://www.cnblogs.com/theskulls/p/5707869.html