zoukankan      html  css  js  c++  java
  • 2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案

    2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案

    不知不觉离决赛都过去一个月了,一直忙于各种事情,都忘记整理一份试题。当作回忆也好。

     

    1.
    
    标题:好好学习
    
        汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。但是汤姆不认识汉字,他就想胡乱地贴成一行。
    
        请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?
    
        答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。
        如果能够约分,请输出约分后的结果。

     

    这道题很简单,我当时是直接列出来,送分题。

    ----

     

    2.
    
    
    标题:埃及分数
    
        古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式。
    
        这里,a 和 b 必须是不同的两个整数,分子必须为 1
    
        比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):
    
    1/8 + 1/120
    1/9 + 1/45
    1/10 + 1/30
    1/12 + 1/20
    
    
        那么, 2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。
    
        请严格按照要求,通过浏览器提交答案。
        注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字


    用FOR循环嵌套即可,但是要注意浮点数在计算机系统的表示方式,不能用=号来判定,应该用NUM1 - NUM2 < 0.000000001  ||  NUM1 - NUM2 > -0.00000000001来判断

    没什么难度

    -------

    3.
    
    标题:金蝉素数
    
        考古发现某古墓石碑上刻着一个数字:13597,后研究发现:
    
        这是一个素数!
        
        并且,去掉首尾数字仍是素数!
    
        并且,最中间的数字也是素数!
    
        这样特征的数字还有哪些呢?通过以下程序的帮助可以轻松解决。请仔细阅读代码,并填写划线部分缺失的代码。
    
    public class A
    {
    	static boolean isPrime(int n)
    	{
    		if(n<=1) return false;
    		for(int i=2; i*i<=n; i++){
    			if(n%i==0) return false;
    		}
    		return true;
    	}
    	
    	static void f(int[] x, int k)
    	{
    		if(_____________________________){  // 填空位置
    			if(isPrime(x[0]*10000 + x[1]*1000 + x[2]*100 + x[3]*10 + x[4]) &&
    				isPrime(x[1]*100 + x[2]*10 + x[3]) &&
    				isPrime(x[2]))
    				System.out.println(""+x[0]+x[1]+x[2]+x[3]+x[4]);
    			return;
    		}
    		
    		for(int i=k; i<x.length; i++){
    			{int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }
    			f(x,k+1);
    			{int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }
    		}
    	}
    	
    	static void test()
    	{
    		int[] x = {1,3,5,7,9};
    		f(x,0);
    	}
    	
    	public static void main(String[] args)
    	{
    		test();
    	}
    }
    
    
        请分析代码逻辑,并推测划线处的代码,通过网页提交。
        注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!


    看看有那个变量没用到,然后带入数值推测即可。

    -----

    4.
    
    标题:横向打印二叉树
    
        二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。
    
        当遇到空子树时,则把该节点放入那个位置。 
    
        比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如图1所示。 
    
        本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。 
    
        输入数据为一行空格分开的N个整数。 N<100,每个数字不超过10000。
        输入数据中没有重复的数字。 
    
        输出该排序二叉树的横向表示。 对应上例中的数据,应输出:
    
       |-12
    10-|
       |-8-|
           |   |-7
           |-5-|
               |-4
    
    
        为了便于评卷程序比对空格的数目,请把空格用句点代替:
    ...|-12
    10-|
    ...|-8-|
    .......|...|-7
    .......|-5-|
    ...........|-4
    
    例如:
    用户输入:
    10 5 20
    则程序输出:
    ...|-20
    10-|
    ...|-5
    
    再例如:
    用户输入:
    5 10 20 8 4 7
    则程序输出:
    .......|-20
    ..|-10-|
    ..|....|-8-|
    ..|........|-7
    5-|
    ..|-4
    
    
    资源约定:
    峰值内存消耗(含虚拟机) < 64M
    CPU消耗  < 1000ms
    
    
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
    注意:主类的名字必须是:Main,否则按无效代码处理。
    


    首先写一个二叉树类,然后把输入的数据添加到类中,然后按顺序输出出来。主要是要输出目录结构,用递归,(有左节点,有右节点,无节点,两个节点都有)各种情况都要考虑。这道题浪费了我不少时间,最终还是拿下了~!!

    -----

    5.
    
    标题:危险系数
    
        抗日战争时期,冀中平原的地道战曾发挥重要作用。
    
        地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。
      
        我们来定义一个危险系数DF(x,y):
        对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。
    
        本题的任务是:已知网络结构,求两站点之间的危险系数。
    
    
        输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,通道数;
        接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条通道;
        最后1行,两个数u,v,代表询问两点之间的危险系数DF(u, v)。
    
        输出:一个整数,如果询问的两点不连通则输出-1.
    
    
    例如:
    用户输入:
    7 6
    1 3
    2 3
    3 4
    3 5
    4 5
    5 6
    1 6
    则程序应该输出:
    2
    
    资源约定:
    峰值内存消耗(含虚拟机) < 64M
    CPU消耗  < 2000ms


     

    当时数据结构没学好 ,,,这道题没思路,直接跳过了~!!!郁闷。

    ----

    6.
    
    标题:公式求值
    
        输入n, m, k,输出图1所示的公式的值。其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。组合数的计算公式如图2所示。
    
        输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。
    
        计算图1所示的公式的值,由于答案非常大,请输出这个值除以999101的余数。
    
    【样例输入1】
    3
    1
    3
    【样例输出1】
    162
    
    【样例输入2】
    20
    10
    10
    【样例输出2】
    359316
    
    【数据规模与约定】
    对于10%的数据,n≤10,k≤3;
    对于20%的数据,n≤20,k≤3;
    对于30%的数据,n≤1000,k≤5;
    对于40%的数据,n≤10^7,k≤10;
    对于60%的数据,n≤10^15,k ≤100;
    对于70%的数据,n≤10^100,k≤200;
    对于80%的数据,n≤10^500,k ≤500;
    对于100%的数据,n在十进制下不超过1000位,即1≤n<10^1000,1≤k≤1000,同时0≤m≤n,k≤n。
    
    【提示】
    999101是一个质数;
    当n位数比较多时,绝大多数情况下答案都是0,但评测的时候会选取一些答案不是0的数据;
    
    资源约定:
    峰值内存消耗(含虚拟机) < 128M
    CPU消耗  < 2000ms
    
    
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
    注意:主类的名字必须是:Main,否则按无效代码处理。
    


     

    这道题主要是考算法优化。思路逻辑基本没什么难度。这道题我最终的优化大概能拿67成的分,再高的就拿不了。idea有限。

    对于重复算的数值只计算一次,对于重复算的公式就尽量优化计算速度,还有计算的数值按大小分类计算,提高效率。

    ----

    6道题全做了。不过。。。。

    其中第5道题是不会的,写了个HelloWorld上去,o(∩_∩)o 哈哈

    在北大比赛完,结果在2天后就出来了,一等奖,有点惊讶,而且官方在官网就

    发了个名单,然后什么消息都没有,比赛主办方这点做得非常烂。希望下一年有所改善!

    qsuron 小树 小树博客,欢迎学习交流!

  • 相关阅读:
    spring core源码解读之ASM4用户手册翻译之一asm简介
    nginx启动,重启,关闭命令
    linux LVM分区查看dm设备
    jdbc 对sqlite的基本操作
    linux配置多个ip
    细说Linux下的虚拟主机那些事儿
    打造字符界面的多媒体Linux系统
    linux计划crontab
    因修改/etc/ssh权限导致的ssh不能连接异常解决方法
    Linux修改主机名
  • 原文地址:https://www.cnblogs.com/riskyer/p/3253875.html
Copyright © 2011-2022 走看看