蓝桥杯第九届国赛javab组题目解析

本文详细解析了蓝桥杯第九届国赛javab组的六道题目,涵盖三角形面积计算、最大乘积求解、全排列问题、整理玩具的正确摆放判断、版本分支查询以及防御力道具使用策略。每道题目均提供了解题思路和部分关键代码,旨在帮助参赛者理解解题方法和提高编程能力。
摘要由CSDN通过智能技术生成

第一题:


标题:三角形面积

已知三角形三个顶点在直角坐标系下的坐标分别为:
(2.3, 2.5)
(6.4, 3.1)
(5.1, 7.2)

求该三角形的面积。

注意,要提交的是一个小数形式表示的浮点数。
要求精确到小数后3位,如不足3位,需要补零。

就是普通的数学题,纯手算三分钟就Ok,答案就不贴出来了,算错了就反而尴尬了。

 

第二题:

标题:最大乘积

把 1~9 这9个数字分成两组,中间插入乘号,
有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次。

比如:
984672 * 351 = 345619872
98751 * 3462 = 341875962
9 * 87146325 = 784316925
...

符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少?

注意,需要提交的是一个整数,表示那个最大的积,不要填写任何多余的内容。
(只提交乘积,不要提交整个算式)

 

答案:839542176=96*8745231

import java.util.ArrayList;

public class Main{
	static long max,x,y;
	public static void main(String[] args)throws Exception{
		int[] arr={1,2,3,4,5,6,7,8,9};
		p(arr,0);
		System.out.println(max);
		System.out.println(x+" "+y);
	}
	public static void p(int[] arr,int pi) {//全排列
		if(pi==9) {
			pp(arr);
		}
		for(int i=pi;i<arr.length;i++) {
			int t=arr[i];
			arr[i]=arr[pi];
			arr[pi]=t;
			p(arr,pi+1);
			t=arr[i];
			arr[i]=arr[pi];
			arr[pi]=t;			
		}
	}
	public static void pp(int[] arr) {
		for(int i=1;i<5;i++) {//这个全排列取前i个数作为第一个数,后面为第二个数
			int a=0,b=0;
			for(int ii=0;ii<i;ii++) {
				a=a*10+arr[ii];//数组变成数字的方法
			}
			for(int jj=i;jj<arr.length;jj++) {
				b=b*10+arr[jj];
			}
			
			long ma=a*b;//这就是要判断的数
			if(ma<123456789)//首先判断是否为9位数
				continue;
			char[] aa=String.valueOf(ma).toCharArray();
			ArrayList<Character> al=new ArrayList<Character>();
			for(int ii=0;ii<aa.length;ii++) {
				if(al.contains(aa[ii]))
					 break;
				al.add(aa[ii]);
			}
			if(al.size()!=9)//判断每个数字是否只出现一次
				continue;
			
			if(al.contains('0'))//判断数字里是否有0
				continue;
			if(max>ma)
				continue;
			max=ma;
			x=a;
			y=b;
		}
	}
}

 

这道题很简单

1.两个数自然必须保证正好是1到9九个数组合成的,减少循环次数

2.考虑两个数互换的重复问题,自然第一个数不能构造超过四位的数字,减少循环次数

 

第三题:

标题:全排列

对于某个串,比如:“1234”,求它的所有全排列。
并且要求这些全排列一定要按照字母的升序排列。
对于“1234”,应该输出(一共4!=24行):
1234
1243
1324
1342<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值