平方十位数(蓝桥杯第八届国赛真题 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;
	}
}

 

全部评论

相关推荐

点赞 评论 收藏
分享
杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务