平方十位数(蓝桥杯第八届国赛真题 JAVA-B组)
思路:从大到小枚举,判断其平方是否不重复
答案:9814072356
//水题
标题:平方十位数
由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。
这其中也有很多恰好是平方数(是某个数的平方)。
比如:1026753849,就是其中最小的一个平方数。
请你找出其中最大的一个平方数是多少?
注意:你需要提交的是一个10位数字,不要填写任何多余内容。
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=100000;i>=0;i--) {//因为十位数,则i最大不会超过100000
//注意int和long会超出范围的,所以用了BigInteger
String s=String.valueOf(BigInteger.valueOf(i).multiply(BigInteger.valueOf(i)));
if(isTrue(s)) {//判断是否满足条件
System.out.println(s);
break;
}
}
}
private static boolean isTrue(String s) {
// TODO Auto-generated method stub
int a[]=new int [10];
for(int i=0;i<s.length();i++){
int index=s.charAt(i)-'0';
a[index]++;
}
for(int i=0;i<10;i++){
if(a[i]!=1) {
return false;
}
}
return true;
}
}