?小羊简介:
?博客主页:小羊不会飞
?年龄:20 大二在读
?爱好:干饭,运动,码代码,看书,旅游
?即将更新:
?1、手把手带你搭建个人博客网站
?2、后台管理系统模块更新
?:感兴趣的朋友,赶紧上车吧!!
?欢迎关注?点赞?收藏?留言?
?有任何疑问,欢迎留言讨论!!!
目录
?简单介绍一下蓝桥杯
?大赛流程
?大赛解疑
?第十届蓝桥杯真题
试题 A: 组队?
试题 B: 不同子串?
题目C:数列求值?
试题 D: 数的分解?
试题 F: 特别数的和?
?简单介绍一下蓝桥杯
?全国软件专业人才设计与创业大赛,又名“蓝桥杯”大赛,是工业和信息化部人才交流中心举办的年度赛事。
?全国1200余所高校参赛,累计参赛人数超过40万人
?对大学生综合评测,奖学金评定,升学考研都有一定益处。
?软件组分为 C/C++ 组和 Java 组,以考察选手算法设计和程序设计能力为主。
?大赛流程
省赛
省赛每个组别设置一、二、三等奖,原则上各奖项的比例为10%、20%、30%。获奖比例仅作为参考,组委会专家组将根据赛题难易程度及整体答题情况,制定获奖最低分数线,未达到获奖最低分数线者不得奖。
✨划重点:省赛一等奖选手获得直接进入全国总决赛资格。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。(心动不如行动吧!)
?大赛解疑
很多同学对于蓝桥杯的报名犹豫不决,害怕自己拿不了奖.....,有这些想法的同学要注意了!
?首先,看到上面的获奖比例,我相信大家会发现蓝桥杯的获奖竟然高达60%!!!大约每两位参赛选手中就会诞生一位获奖选手,所以大家一定要有自信心,总有人会拿奖,那个人为什么不用可以是我?
?其次,就拿个人赛软件类来说,赛道分为研究生组,大学A组(重点本科组),大学B组(普通本科组),大学C组(高职高专组)。身为B组的我们看到这儿,你还会害怕被大神碾压而烦恼吗?(当然,也不排除一些“流落民间”的神仙)
?最后,大家也不用担心自己没学过高级算法怎么办,有做过蓝桥杯真题的小伙伴会发现,官方爸爸们总会出几道水题,来给大伙们送福利,下面我从第十届蓝桥杯真题中筛选了一些题目,现在来带大家一起来看看
?第十届蓝桥杯真题
试题 A: 组队?
本题总分:5 分
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。 每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
答案:490
✨划重点:历年真题中的第一题几乎都是送分题,大伙儿可要拿稳了!!!
试题 B: 不同子串?
本题总分:5 分
【问题描述】
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分
class D_2{ /** * 不同子串 */ void method() { Set<String> sub = new HashSet<String>(); String target="0100110001010001"; for(int i=1;i<=target.length();i++){ for(int j=0;j<i;j++){ sub.add(target.substring(j,i)); } } System.out.println(sub.size()); }}
答案:100
这个题目对大家的基本功可能有一点点要求:
1、首先要知道用Set集合自动去重
2、还要知道用substring(),把字符串内部进行拆分并组合
题目C:数列求值?
本题总分:10 分
【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写 多余的内容将无法得分。
class D_3{ /** * 数列求值 * 1.给定一个数列1,1,1,3,5,9,17,.....从第4项开始 * 2.每项都是前3项的和 * 求第20190324项的最后4位数字 */ int m; public int method(){ int []a=new int[20190324]; a[0]=1; a[1]=1; a[2]=1; for(int i=3;i<20190324;i++){ /**算出来856830691 * 成功入坑 *(有答案提示千位不为零) */ // 开始离谱,没有想到int类型的最大数值范围,加到后面会发生溢出 // a[i]=a[i-1]+a[i-2]+a[i-3] /** * 模10000后算出正确答案4659 */ a[i]=(a[i-1]+a[i-2]+a[i-3])%10000;//虽然是暴解,但也需要有一定的思考(%10000很关键) } m=a[20190323]; return m; }}
答案: 4659
划重点:(答案的千位不为 0)
虽然题目很简单,直接暴解就完事儿 了,但也需要有一定的思考,考察的更多的是同学们是否细心。
?????如果前三道题都做对了,那恭喜你,省三基本上拿捏了 ??????
试题 D: 数的分解?
本题总分:10 分
【问题描述】
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
class D_4{ /** * 数的分解 * 1.把2019分解成”3个各不相同的正整数(不包含0)“之和 * 2.并且要求每个正整数都不包含数字2和4 * 一共有多少种不同的分解方法 * 3.注意交换3个整数的顺序被视为同一种方法 * 例:1000+1001+18和1001+1000+18都是同一种 * (这个地方可已通过人为规定它们之间的大小来解决比如说 a<b<c,避免出现重复计算) * 答案40785 */ boolean check(int number){//来筛选每个数字里面都不包含数字2和4 for (;number!=0;) { if (number % 10 == 2 || number % 10 == 4) {//判断条件用||只要满足一个条件就执行false return false; } else number /= 10; } return true; } int method(){ int n=2019; int i=0; for(int a=1;a<n;a++ ){ for (int b=a+1;n-a-b>b&&b<n;b++){//这个地方n-a-b=c,c要大于b if(check(a)&&check(b)&&check(n-a-b)){ i++; } } } return i; }}
答案:40785
这个题目没啥特别的地方,思路非常简单,一开始就先自己设定好c>b>a就完事儿了,然后在写一个判断数字中是否包含2和4的子函数,然后两重循环直接暴力解就完事儿了!
试题 F: 特别数的和?
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分
【问题描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 n 中,所有这样的数的和是多少?
【输入格式】
输入一行包含两个整数 n。
【输出格式】
输出一行,包含一个整数,表示满足条件的数的和。
【样例输入】 40
【样例输出】 574
【评测用例规模与约定】 对于 20% 的评测用例,1≤n≤10。 对于 50% 的评测用例,1≤n≤100。 对于 80% 的评测用例,1≤n≤1000。 对于所有评测用例,1≤n≤10000。
class D_6{ /** * 特别数的和 *///思路:先将整型数据转换成字符串类型,然后用indexOf找字符串中是否包含“2”,“0”,“1”,“9” /**涉及到的知识点 //public int indexOf(int ch): // String.indexOf()返回的值是int类型 // 表示指定字符在字符串中第一次出现处的索引(下标从0开始时) (这个地方也可以写一个check函数跟上面题目的check函数类似) // 如果此字符串中没有这样的字符,则返回 -1 //String s=Integer.toString(int i) //就是将i转为string **/ int method(){ Scanner in = new Scanner(System.in); int m=0; int n=in.nextInt();//输入整数 for (int i=1;i<=n;i++){ String s=Integer.toString(i); //String类型有一个方法:contains(),该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false if(s.contains("2")||s.contains("1")||s.contains("0")||s.contains("9")){ m+=i; } } return m; }}
这个题目的思路也非常简单,把int类型的数字转换成字符串,然后用一个String的contains()方法来判断是否包含2、0、1、9,有则把该int类型数值加上。
????如果前面这些题都做对了,那恭喜你,省二稳了,省一可以冲一下 ????
?最后总结一下:
看完这些,是不是感觉自己又可以了呀,博主写这篇博客的目的不是说给蓝桥杯打广告,也不是说纯粹为了写题解,而是希望能够给那些还在犹豫报名蓝桥杯的小伙伴一点鼓励和信心。
?最后把我很喜欢的一句话送给大家:
你不笨然后你愿意去努力,你就一定会有收获的!