思路:就按照人脑的思考模式,把数字转换成字符串,然后在不同地方(循环)分割成两个子串,再把子串转化为数字,判断这两个数是否是平方数。不是一个数一个数地循环,而是一个平方数一个平方数地循环。
这道题不难,但要注意一些小技巧,比如:
-
判断一个数平方后是否是整数,可以Math.sqrt(n)%1==0,或者Math.round(n)==n (四舍五入后与原来相等)
-
数字转化为字符串,String str=String.valueOf(a)
-
字符串转化为数字,int a=parseInt(str);
-
向上取整,Math.floor(double a)
-
必要的时候可以强制类型转换,int t=(int)Math.floor(s);
源码:
import java.util.Scanner;
import static java.lang.Integer.parseInt;
public class 拼接平方数 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int s=scanner.nextInt();
int e=scanner.nextInt();
int t=(int)Math.floor(Math.sqrt(s));
while(t*t<e){
int a=t*t;
String str=String.valueOf(a);
for(int i=1;i<str.length();i++){
String str1=str.substring(0,i);
String str2=str.substring(i);
int a1=parseInt(str1);
int a2=parseInt(str2);
if((Math.sqrt(a1)%1==0)&&(Math.sqrt(a2)%1==0)&&a2!=0){
System.out.println(str);
break;
}
}
t++;
}
}
}