蓝桥杯决赛Java语言C组真题解析:平方末尾与七星填数

版权申诉
0 下载量 75 浏览量 更新于2024-08-03 收藏 639KB PDF 举报
"第七届蓝桥杯软件类决赛部分真题(Java语言C组)包括了平方末尾问题和七星填数问题,是信息技术竞赛和计算机类学科竞赛的参考资料。" 在第七届蓝桥杯软件类决赛中,Java语言C组的题目涉及到两个主要的知识点:平方末尾和七星填数。 1. 平方末尾 这个问题考察的是对平方数性质的理解。平方数是指可以表示为某个整数乘以其自身的数字,例如25(5的平方)和64(8的平方)。题目指出,平方数的末尾数字有特定的规律,只能是0、1、4、5、6或9。任务是编写程序来确定2位以上的数字构成的平方数的最后两位有多少种可能。这里使用Java编程,通过遍历从10到1000000的长整数,计算它们的平方,并将结果存储在一个HashSet中,以去除重复项。最后输出HashSet的大小即为答案。代码中的关键部分是: ```java for(long i=10;i<=1000000;i++){ String a=""+(i*i/100); set.add(a); } System.out.println(set.size()); ``` 这段代码遍历指定范围,计算每个数的平方后去掉最后两位,然后将剩下的两位添加到集合中。 2. 七星填数 这是一个组合优化问题,类似于数独,需要在七角星的14个节点上填入1到14的数字,每个数字仅出现一次,且每条直线上的四个数字之和必须相等。已知三个数字,需要求解其余的数字。解决方法通常采用深度优先搜索(DFS)策略,通过递归地尝试所有可能的数字组合。代码中定义了一个swap方法用于交换数组中的元素,以及一个dfs方法进行深度优先搜索。在dfs方法中,当搜索到数组长度时,检查当前数组是否满足条件(每条线上的数字和相等),若满足则更新答案。关键代码片段如下: ```java public void dfs(int[] A, int step){ // ... (DFS search logic) } ``` 注意题目要求只提交填充后的绿色节点的4个数字,以空格分隔。 这两个问题都要求参赛者具备扎实的算法基础,理解并能应用数学规律,以及熟练运用Java编程解决实际问题的能力。对于准备参加类似竞赛的学生来说,这类题目是很好的训练材料,有助于提升问题解决和编程技能。