1、问题描述
小明发现49很有趣,首先,它是个平方数。它可以拆分为4和9,拆分出来的部分也是平方数。169也有这个性质,我们权且称它们为:拼接平方数。
100可拆分1 00,这有点勉强,我们规定,0 00 000 等都不算平方数。
小明想:还有哪些数字是这样的呢?
你的任务出现了:找到某个区间的所有拼接平方数。
2、代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
for(int i = a;i <= b;i++) {
if(check(i)) {
System.out.println(i);
}
}
}
//判断平方数
public static boolean is_sqrt(int n) {
int t = (int)Math.sqrt(n);
if(t * t == n) {
return true;
}
return false;
}
//判断拼接平方数
public static boolean check(int n) {
String s = String.valueOf(n);
for(int i = 1;i < s.length();i++) {
if(is_sqrt(n) && is_sqrt(Integer.parseInt(s.substring(0,i))) &&
is_sqrt(Integer.parseInt(s.substring(i))) &&
Integer.parseInt(s.substring(0,i)) != 0 &&
Integer.parseInt(s.substring(i)) != 0) {
return true;
}
}
return false;
}
}