49-2017年第八届蓝桥杯国赛试题及详解(Java本科B组)

蓝桥杯历年真题题目及题解目录汇总推荐

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2017年第八届蓝桥杯国赛试题及详解(Java本科B组)

  1. 结果填空 (满分17分)
  2. 结果填空 (满分45分)
  3. 代码填空 (满分23分)
  4. 程序设计(满分43分)
  5. 程序设计(满分71分)
  6. 程序设计(满分101分)

1.标题:平方十位数

由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。
这其中也有很多恰好是平方数(是某个数的平方)。

比如:1026753849,就是其中最小的一个平方数。

请你找出其中最大的一个平方数是多少?

注意:你需要提交的是一个10位数字,不要填写任何多余内容。
 
---------------------

思路:一开始以为直接最大值开根号取整+1就结束,但是不能重复啊

代码:

package guosai;

public class gs2017 {
	public static void main(String[] args) {
		
		long a = 9876543210L;
		
		long b = (long) Math.sqrt(a);
		System.out.println("最大可能值:" + b);
		
		for(long i = b; i >= 10000L; i--) {
			long c = i * i;
			int[] num = new int[10];
			int flag = 0;
			while(c!=0) {
				int d = (int) (c % 10);
				if(num[d] != 0) {
					flag = 1;
					break;
				}
				num[d]++;
				c /= 10;
			}
			if(flag == 0) {
				System.out.println(i * i);
				break;
			}
		}
		System.out.println("over");
		
	}
	
}

/*
 * 
 * ans = 9814072356
 * 
 * */

  

猜你喜欢

转载自www.cnblogs.com/zhumengdexiaobai/p/10807181.html