小洪維尼 发表于 2017-7-10 09:28:00

华为上机:对数计数器




对数计数器


描述:
  小明在使用一个计数器,计数范围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;
}
}
  这个应该可以找出来规律的
页: [1]
查看完整版本: 华为上机:对数计数器