题目描述
小明发现49很有趣,首先,它是个平方数。它可以拆分为4和9,拆分出来的部分也是平方数。169也有这个性质,我们权且称它们为:拼接平方数。
100可拆分1 00,这有点勉强,我们规定,0 00 000 等都不算平方数。
小明想:还有哪些数字是这样的呢?
你的任务出现了:找到某个区间的所有拼接平方数。
输入
两个正整数 a b (a<b<10^6)
输出
若干行,每行一个正整数。表示所有的区间[a,b]中的拼接平方数
样例输入
1 200
样例输出
49
169
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for(int i = a;i <= b;i ++) {
if(judge(i)) {
System.out.println(i);
}
}
}
static boolean is_pf(int num) {
int k = (int) Math.sqrt(num);
return k * k == num;
}
static boolean judge(int num){
String s = String.valueOf(num);
int len = s.length();
for(int i = 1;i < len;i ++) {
if( is_pf(num) && is_pf( Integer.parseInt(s.substring(0, i)) ) && is_pf( Integer.parseInt(s.substring(i)) )&& Integer.parseInt((s.substring(0, i))) != 0 && Integer.parseInt(s.substring(i)) != 0) {
return true;
}
}
return false;
}
}