1、标题:哪天返回

小明被不明势力劫持。后被扔到x星站再无问津。小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文。
他决定在x星战打工。好心的老板答应包食宿,第1天给他1元钱。
并且,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。
请计算一下,小明在第几天就能凑够108元,返回地球。

要求提交的是一个整数,表示第几天。请不要提交任何多余的内容。

思路: 看清题目,第1天1元,以后的每一天都比前一天多2元钱,直到他有足够的钱买票。代码简单,不写了。

2、标题:猴子分香蕉

5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!

请计算一开始最少有多少个香蕉。

需要提交的是一个整数,不要填写任何多余的内容。

思路: 这种题暴力枚举就可以了。怎么方便枚举就怎么写代码。理解清楚,吃掉n个并把自己的一份藏起来,也就是说x%5==n,并且吃掉的是x/5个。剩余x-n-x/5个。代码写完后再正向验算一下,确认满足题目条件,并且所得答案为最少的即可。

3、标题:字母阵列

仔细寻找,会发现:在下面的8x8的方阵中,隐藏着字母序列:“LANQIAO”。
SLANQIAO
ZOEXCCGB
MOAYWKHI
BCCIPLJQ
SLANQIAO
RSFWFNYA
XIFZVWAL
COAIQNAL

我们约定: 序列可以水平,垂直,或者是斜向;
并且走向不限(实际上就是有一共8种方向)。
上图中一共有4个满足要求的串。

下面有一个更大的(100x100)的字母方阵。
你能算出其中隐藏了多少个“LANQIAO”吗?

思路: 字符串处理,比较简单,只要把情况想清楚就可以了。对给定100*100的字母方阵遍历,**遇到L时,往8个方向搜索:从左到右,从右到左,从上到下,从下到上,从左上到右下,从左下到右上,从右上到左下,从右下到左上。**如果对数组越界不好判断,就用try catch解决,把异常的都抛出。

4、标题:第几个幸运数

到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。

我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49

小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。

请你帮小明计算一下,59084709587505是第几个幸运数字。

需要提交的是一个整数,请不要填写任何多余内容。

思路: 此题正向按顺序遍历是找不到答案的,因为题目给定数字太大。因此要反过来考虑:所谓幸运数,就是因子只含有3,5,7。因此,若x为幸运数,x等于3的a次方乘5的b次方乘7的c次方。那么三重循环,就可以找出来所有比题目给定数字小的幸运数。也就找到答案了。

5、标题:书号验证

2004年起,国际ISBN中心出版了《13位国际标准书号指南》。
原有10位书号前加978作为商品分类标识;校验规则也改变。
校验位的加权算法与10位ISBN的算法不同,具体算法是:
用1分别乘ISBN的前12位中的奇数位(从左边开始数起),用3乘以偶数位,乘积之和以10为模,10与模值的差值再对10取模(即取个位的数字)即可得到校验位的值,其值范围应该为0~9。

下面的程序实现了该算法,请仔细阅读源码,填写缺失的部分。

public class A
{static boolean f(String s){int k=1;int sum = 0;for(int i=0; i<s.length(); i++){char c = s.charAt(i);if(c=='-' || c==' ') continue;sum += ______________________________;  //填空k++;if(k>12) break; }return s.charAt(s.length()-1)-'0' == (10-sum % 10)%10;}public static void main(String[] args){System.out.println(f("978-7-301-04815-3"));System.out.println(f("978-7-115-38821-6"));}
}

注意:只提交空缺的代码,不要抄写已经存在的代码。

思路: 对于代码填空题,最好的方法是不要死看代码,试着用debug跟踪代码,根据调试结果判断每个函数、每个语句具体在做什么。很多题目让填的语句都是类似递归那种语句,主要注意函数参数的变化过程。**要注意:填的只能是1条语句,也就是在一个分号内能解决的问题!**但如果for循环,循环体只有1句话且不加括号,也算一条语句的。

6、标题:打印大X

如下的程序目的是在控制台打印输出大X。
可以控制两个参数:图形的高度,以及笔宽。

用程序中的测试数据输出效果:
(如果显示有问题,可以参看p1.png)

高度=15, 笔宽=3
***           ******         ******       ******     ******   ****** ******************* ******   ******     ******       ******         ***
***           ***高度=8, 笔宽=5
*****  *****************************************************
*****  *****

请仔细分析程序流程,填写缺失的代码。

public class A
{static void f(int h, int w){System.out.println(String.format("高度=%d, 笔宽=%d",h,w));int a1 = 0;int a2 = h - 1;for(int k=0; k<h; k++){int p = Math.min(a1,a2);int q = Math.max(a1+w,a2+w);for(int i=0; i<p; i++) System.out.print(" ");if(q-p<w*2){____________________________________________ ; //填空}else{for(int i=0; i<w; i++) System.out.print("*");for(int i=0; i<q-p-w*2; i++) System.out.print(" ");for(int i=0; i<w; i++) System.out.print("*");}System.out.println();a1++;a2--;}}public static void main(String[] args){f(15,3);f(8,5);}
}

注意:只填写缺失的代码,不要拷贝已经存在的代码。

思路: 思路跟上题相似,再次强调,要用debug调试,而不要一直盯着题目给的代码看!

7、标题:缩位求和

在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。
比如:248 * 15 = 3720
把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得
2 + 4 + 8 = 14 ==> 1 + 4 = 5;
1 + 5 = 6
5 * 6
而结果逐位求和为 3
5 * 6 的结果逐位求和与3符合,说明正确的可能性很大!!(不能排除错误)

请你写一个计算机程序,对给定的字符串逐位求和:
输入为一个由数字组成的串,表示n位数(n<1000);
输出为一位数,表示反复逐位求和的结果。

例如:
输入:
35379

程序应该输出:
9

再例如:
输入:
7583676109608471656473500295825

程序应该输出:
1

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

思路: 这个题也很直接了。需要注意一点的是:java中StringBuffer的处理速度较慢,建议尽量用String处理。

8、标题:等腰三角形

本题目要求你在控制台输出一个由数字组成的等腰三角形。
具体的步骤是:

  1. 先用1,2,3,…的自然数拼一个足够长的串

  2. 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。
    比如,当三角形高度是8时:

    1
    2 1
    3 8
    4 1
    5 7
    6 1
    7 6
    891011121314151

显示不正确时,参看:p1.png

输入,一个正整数n(3<n<300),表示三角形的高度
输出,用数字填充的等腰三角形。

为了便于测评,我们要求空格一律用"."代替。

例如:
输入:
5

程序应该输出:
…1
…2.1
…3…2
.4…1
567891011

再例如:
输入:
10

程序应该输出:
…1
…2.2
…3…2
…4…2
…5…1
…6…2
…7…0
…8…2
.9…9
1011121314151617181

再例如:
输入:
15

程序应该输出:

…1
…2.3
…3…2
…4…3
…5…1
…6…3
…7…0
…8…3
…9…9
…1…2
…0…8
…1…2
…1…7
.1…2
21314151617181920212223242526

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

思路: 蓝桥杯大题最常见的三个类型:枚举,搜索,模拟。很明显这个题属于模拟题。先找出来给定高度情况下最多打印到哪个数字。再找出来三角形的底边起始数字和终止数字。再将其他行按给定格式打印即可。

9、标题:小朋友崇拜圈

班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。
在一个游戏中,需要小朋友坐一个圈,
每个小朋友都有自己最崇拜的小朋友在他的右手边。
求满足条件的圈最大多少人?

小朋友编号为1,2,3,…N
输入第一行,一个整数N(3<N<100000)
接下来一行N个整数,由空格分开。

要求输出一个整数,表示满足条件的最大圈的人数。

例如:
输入:
9
3 4 2 5 3 8 4 6 9

则程序应该输出:
4

解释:
如图p1.png所示,崇拜关系用箭头表示,红色表示不在圈中。
显然,最大圈是[2 4 5 3] 构成的圈

再例如:
输入:
30
22 28 16 6 27 21 30 1 29 10 9 14 24 11 7 2 8 5 26 4 12 3 25 18 20 19 23 17 13 15

程序应该输出:
16

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

思路: 依次从每个点开始构建一个圈,找到最大的圈。
代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int[] a = new int[N+1];for(int i=1; i<=N; i++) {a[i] = sc.nextInt();}int MAX = -1;for(int i=1; i<=N; i++) {List<Integer> list = new ArrayList<Integer>();int tmp = a[i];list.add(tmp);int num = 1;tmp = a[tmp];while(!list.contains(tmp)) {list.add(tmp);num++;tmp = a[tmp];}if(num>MAX) {MAX = num;}}System.out.println(MAX);sc.close();}}

10、标题:耐摔指数

x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。

x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。

如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n

为了减少测试次数,从每个厂家抽样3部手机参加测试。

如果已知了测试塔的高度,并且采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?

输入数据,一个整数n(3<n<10000),表示测试塔的高度。
输出一个整数,表示最多测试多少次。

例如:
输入:
3

程序应该输出:
2

解释:
手机a从2楼扔下去,坏了,就把b手机从1楼扔;否则a手机继续3层扔下

再例如:
输入:
7

程序应该输出:
3

解释:
a手机从4层扔,坏了,则下面有3层,b,c 两部手机2次足可以测出指数;
若是没坏,手机充足,上面5,6,7 三层2次也容易测出。

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。


笨笨有话说:
我觉得3个手机太难了,要是2个手机还可以考虑一下。

歪歪有话说:
想什么呢,你!要是1部手机还用你编程啊?那样的话只好从下往上一层一层测。

思路: 这是一个很经典的动态规划题目。类似POJ:3783。扔鸡蛋,扔球模型。此题二分是不可行的。因为手机个数是有限制的。
代码: POJ3783的代码:https://blog.csdn.net/zhanggirlzhangboy/article/details/88070893

蓝桥杯2018省赛Java开发大学C组思路总结相关推荐

  1. 蓝桥杯第八届省赛JAVA真题----字母组串

    标题:字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA"," ...

  2. 蓝桥杯 2018年预赛C语言大学B组 C/C++

    1.第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 直接利用EXCEL 里面的日期函数计算,注意需 ...

  3. 第十一届蓝桥杯大赛决赛赛题 C++ 大学C组

    试题A:美丽的2 问题描述   小蓝特别喜欢2,今年是公元2020年,他特别高兴.   他很好奇,在公元1年到公元2020年(包含)中,有多少个年份的数位中包含数字2? 算法设计 遍历1~2020,如 ...

  4. 蓝桥杯第八届省赛JAVA真题----k倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...

  5. 蓝桥杯第八届省赛JAVA真题----油漆面积

    标题:油漆面积 X星球的一批考古机器人正在一片废墟上考古. 该区域的地面坚硬如石.平整如镜. 管理人员为方便,建立了标准的直角坐标系. 每个机器人都各有特长.身怀绝技.它们感兴趣的内容也不相同. 经过 ...

  6. 蓝桥杯2018国赛C++B组 换零钞(简单题)

    第九届蓝桥杯大赛总决赛 C++ B组 标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. ...

  7. 蓝桥杯2018省赛——猴子分香蕉(Java)

    问题描述: 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉. 第2只猴子醒来, ...

  8. 蓝桥杯第八届省赛JAVA真题----9数算式

    标题:9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你 ...

  9. 蓝桥杯第八届省赛JAVA真题----包子凑数

    标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...

最新文章

  1. React 表单与事件
  2. 简述bios在计算机系统中的作用,BIOS的主要作用
  3. c++运算符的全局重载
  4. python下载安装教程3.8.0-windows中安装Python3.8.0的实现方法
  5. sql join on 多表连接_阿里规范不建议多表Join,可这SQL要怎么写啊?
  6. Mac系统下安装Homebrew后无法使用brew命令
  7. JavaFX图表(七)之散点图
  8. tf.acos_带有Python示例的math.acos()方法
  9. 输入一行字符,用Java分别统计出其中英文字母、空格、数字和其他字符的个数。
  10. 【蓝桥杯】题目 1117: K-进制数
  11. javaweb增删改查实例_JavaWeb图像可视化管理系统之后台搭建(二)用户管理与增删改查(内含代码)...
  12. 如何用TXT文档数据批量制作商品条形码
  13. oracle函数 TO_MULTI_BYTE(c1)
  14. 关于UCINET软件使用计算密度的笔记
  15. C与指针——指针(一)
  16. mysql卸载不干净时,如何干净利索的卸载mysql数据库(完整版)
  17. View的复用:viewHolder
  18. 成功制定:会议纪要模板
  19. 什么邮箱垃圾邮件少?邮箱反垃圾系统是什么?
  20. 书单 | 双十一薅当当羊毛4折囤书攻略

热门文章

  1. Windows ISR介绍
  2. 评论框图片表情输入工具分享
  3. 微信开放平台扫描条形码读取结果错误
  4. [Web]如何利用Boostrap框架搭建一个还可以的静态网站(六_子页)
  5. 【Go实战基础】反射是什么,如何用反射查看变量类型
  6. 地理坐标系、投影坐标系总结
  7. 负载均衡种类及优缺点
  8. IERS 下的ITRF的基本概述
  9. OpenSSL密码库算法笔记——第4.1.2章 窗口算法
  10. prerender html5,HTML5 VUE单页应用 SEO 优化之 预渲染(prerender-spa-plugin)