第七届(16年)蓝桥杯java B组决赛真题

1、愤怒小鸟(填空)
X星球愤怒的小鸟喜欢撞火车!

一根平直的铁轨上两火车间相距 1000 米
两火车 (不妨称A和B) 以时速 10米/秒 相对行驶。

愤怒的小鸟从A车出发,时速50米/秒,撞向B车,
然后返回去撞A车,再返回去撞B车,如此往复....
两火车在相距1米处停车。

问:这期间愤怒的小鸟撞 B 车多少次?

注意:需要提交的是一个整数(表示撞B车的次数),不要填写任何其它内容。

 1  public class One {
 2     //A、B的位置a、b的大小相对于A的起点而言,小鸟的速度为50,A、B的速度都为10
 3     public static double sum=0;//sum用于鸟和B在规定期间相撞的次数
 4     public static void funb(double a,double b){//在路程a、b间鸟由A撞向B
 5         if(b-a<=1){
 6             System.out.println(sum);
 7             return;
 8         }
 9         double time=(b-a)/(50+10);//距离为a、b期间鸟和B相撞的时的时间
10         a=a+10*time;//撞后A的位置
11         b=b-10*time;//撞后B的位置
12         sum++;
13         funa(a,b);//鸟和B相撞后鸟转向A而行
14         return;
15     }
16
17     public static void funa(double a,double b){//鸟由B向A飞行
18         if(b-a<1){//若鸟和B撞完后AB距离小于1,则sum--
19             sum--;
20             System.out.println(sum);
21         }
22         double time=(b-a)/(50+10);
23         a=a+10*time;//撞后A的位置
24         b=b-10*time;//撞后B的位置
25         funb(a,b);
26         return;
27     }
28     public static void main(String args[]){
29         double a=0,b=1000;
30         funb(a,b);
31     }
32 }

愤怒的小鸟(两个函数间递归)

答案为:9

2、反幻方(填空)
我国古籍很早就记载着

2 9 4
7 5 3
6 1 8
这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。

下面考虑一个相反的问题。
可不可以用 1~9 的数字填入九宫格。
使得:每行每列每个对角线上的数字和都互不相等呢?

这应该能做到。
比如:
9 1 2
8 4 3
7 5 6

你的任务是搜索所有的三阶反幻方。并统计出一共有多少种。
旋转或镜像算同一种。

比如:
9 1 2
8 4 3
7 5 6

7 8 9
5 4 1
6 3 2

2 1 9
3 4 8
6 5 7
等都算作同一种情况。

请提交三阶反幻方一共多少种。这是一个整数,不要填写任何多余内容。

 1 public class Main {
 2     public static int sum = 0;// 计数器
 3
 4     public static void fun(int a[], int n) {
 5         if (n == 9) {
 6             text(a);
 7             return;
 8         } else {
 9             for (int i = n; i < 9; i++) { // n后面的
10                 int temp = a[i];
11                 a[i] = a[n];
12                 a[n] = temp;
13                 fun(a, n + 1);
14                 int tamp = a[i];
15                 a[i] = a[n];
16                 a[n] = tamp;
17             }
18         }
19     }
20
21     public static void text(int a[]) {
22         int l1 = a[0] + a[1] + a[2];
23         int l2 = a[3] + a[4] + a[5];
24         int l3 = a[6] + a[7] + a[8];
25         int s1 = a[0] + a[3] + a[6];
26         int s2 = a[1] + a[4] + a[7];
27         int s3 = a[2] + a[5] + a[8];
28         int x1 = a[0] + a[4] + a[8];
29         int x2 = a[2] + a[4] + a[6];
30         if (l1 != l2 && l1 != l3 && l1 != s1 && l1 != s2 && l1 != s3 && l1 != x1 && l1 != x2)
31             if (l2 != l3 && l2 != s1 && l2 != s2 && l2 != s3 && l2 != x1 && l2 != x2)
32                 if (l3 != s1 && l3 != s2 && l3 != s3 && l3 != x1 && l3 != x2)
33                     if (s1 != s2 && s1 != s3 && s1 != x1 && s1 != x2)
34                         if (s2 != s3 && s2 != x1 && s2 != x2)
35                             if (s3 != x1 && s3 != x2)
36                                 if (x1 != x2)
37                                     sum++;
38     }
39     public static void main(String[] args){
40         int a[]={1,2,3,4,5,6,7,8,9};
41         fun(a,0);
42         System.out.print(sum/8);
43     }
44 }

三阶反幻方(递归)

答案为:3120

时间: 2025-01-18 10:01:06

第七届(16年)蓝桥杯java B组决赛真题的相关文章

第四届(13年)蓝桥杯java B组决赛真题

1.标题:猜灯谜(填空) A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜        小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字.        请你用计算机按小明的思路算一下,然后提交"请猜谜"三个字所代表的整数即可. 请严格按照格式,通过浏览器提交答案.    注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字. 1 import java.util.Scanner; 2 //猜灯谜 3 public class Main{

第六届蓝桥杯java b组第8题

乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账. 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料. 输入 一个整数n,表示开始购买的饮料数量(0 < n < 10000) 输出 一个整数,表示实际得到的饮料数 例如: 用户输入 100 程序输出 149 用户输入 101 程序输出 151 资源约定 峰值内存消耗(含虚拟机) < 256M CPU消耗 &l

2015年蓝桥杯java b组第十题

10. 生命之树 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, -, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连. 在这个前提下,上帝要使得S中的点所对应的整数的和尽量大. 这个最大的和就是上帝给生命之树的评分. 经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数

算法笔记_214:第六届蓝桥杯软件类校赛真题(Java语言A组)

目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 6 题目六 7 题目七 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 一个串的子串是指该串的一个连续的局部.如果不要求连续,则可称为它的子序列. 比如对串: "abcdefg" 而言,"ab","abd","bdef" 等都是它的子序列. 特别地,一个串本身,以及空串也是它的子序列. 对两个串而言,可以有许多的共同的子序列,我们关心的是:它们所共同拥

算法笔记_108:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科A组)试题解答

 目录 1 世纪末的星期 2 振兴中华 3 梅森素数 4 颠倒的价牌 5 三部排序 6 逆波兰表达式 7 错误票据 8 带分数 9 剪格子 10 大臣的旅费 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 世纪末的星期 标题: 世纪末的星期 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,"谣言制造商&qu

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

 目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数

蓝桥杯——计算机研究生机试真题(2017.2.20)

1. (2008年华中科技大学计算机研究生机试真题)八进制 题目描述: 输入一个整数,将其转换成八进制数输出. 输入: 输入包括一个整数N(0<=N<=100000). 输出: 可能有多组测试数据,对于每组数据, 输出N的八进制表示数. 样例输入: 7 8 9 样例输出: 7 10 11 法一:递归法: #include <stdio.h> void fun(int N) { if(N) { fun(N/8); printf("%d",N%8); } } int

2016蓝桥杯C++A组第八题 四平方和

直接暴力的话  四层循环 很可能超时  这里用到了小技巧 #include<stdio.h> #include<iostream> #include<cmath> using namespace std; int a[5000001]; int main(){ int n; cin>>n; int flag=0; for(int i=0;i<=(int)sqrt(n);i++){ for(int j=i;j<=(int)sqrt(n);j++){

算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, 然后返回去撞A车,再返回去撞B车,如此往复.... 两火车在相距1米处停车. 问:这期间愤怒的小鸟撞 B 车多少次? 注意:需要提交的是一个整数(表示撞B车的次数),不要