题目:
从大于等于N的正整数里找到一个最小的数M,使之满足:M和M的逆序数(如1230的逆序数为321)的乘积为一个[100000000,200000000]区间内的值。
输入说明:起始数字N;
输出说明:找到的第一个符合条件的数,如果没有符合条件的数,输出F。
输入样例:123456
输出样例:124100
解题思路
输入不能大于100000000(八个0),输入大于100000000的就不符合区间,直接输出F。所以我们设置小于100000001时执行for内循环。假如能找到符合条件的数,直接跳出外循环。
代码实例
import java.util.Scanner;
public class NiXu {
public static void main(String[] args) {
long remainder = 0;
long reNumber = 0;
Scanner scanner = new Scanner(System.in);
Long inputN = scanner.nextLong();
Long number = inputN;
//System.out.println(reNumber);
//判断是否存在
//不存在返回F
outer: for(int j=0;j<1;j++) {
inner: for (Long i = number; i < 100000001; i++) {
//假设存在
if (number * reNumber > 100000000-1 && number * reNumber < 200000000+1) {
//System.out.println("第一个符合条件的数");
System.out.println(number);
//System.out.println("输出1: "+ Long.valueOf(number*reNumber));
//System.out.println(number*reNumber);
break outer;
} else {
number = number + 1;
//System.out.println(number);
long useNumber = number;
reNumber = 0;
while (useNumber != 0) {
remainder = useNumber % 10; //输出逆序
useNumber = useNumber / 10; //循环的次数
reNumber = reNumber * 10 + remainder;
}
//System.out.println(reNumber);
}
}
//没找到则返回F
System.out.println("F");
}
}
}
运行结果
12345678
40000000
123456789
F
123456
124100
知识点
内外循环的合理使用
求逆序数的方法