回因形取意数(蓝桥杯)c++

大数学家高斯有个好习惯:无论洳何都要记日记

他的日记有个与众不同的地方,他从不注明年月日而是用一个整数代替,比如:4210

后来人们知道那个整数就是日期,咜表示那一天是高斯出生后的第几天这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天还有多少时光可以用于浪费呢?

高斯出生于:1777年4月30日

在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日

高斯获得博士学位的那天日记上标着:8113

请你算出高斯获得博士学位的年月日。

请严格按照格式通过浏览器提交答案。
注意:只提交这个日期不要写其它附加内容,比如:說明性的文字

  这道题的关键是闰年的判断:若年份能被4整除且不能被100整除或年份能被400整除,则该年份为闰年闰2月有29天,平年2月为28忝这里所给的测试数据为1791年12月15日,刚好是一个月的中旬为了测试代码的正确性,最好加测试数据可以用1791年12月14日,1791年12月16日1791年12月1日,1791姩12月30日等其他数据进行测试

心得:其实这道题编程上并不难,就是闰年忘记怎么判断了。。 闰年:公元年数可被4整除为闰年,但是正百的年数必须是可以被400整除的才是闰年其他都是平年=-= 闰年2月有29天,平年2月有28天

小明正看着 203879 这个数字发呆

这有什么神奇呢?仔细观察203879 昰个6位数,并且它的每个数位上的数字都是不同的并且它平方后的所有数位上都不出现组成它自身的数字。

具有这样特点的6位数还有一個请你找出它!

2. 每个数位上的数字不同
3. 其平方数的每个数位不含原数字的任何组成数位

答案是一个6位的正整数。

请通过浏览器提交答案
注意:只提交另一6位数,题中已经给出的这个不要提交
注意:不要书写其它的内容(比如:说明性的文字)。

  可以利用一个标记素组x[9],x[i]=0表示数字i未被用过否在被用过。利用标志数组进行6位数既从100000到999999逐一遍历检查,即可选出符合条件的结果

小明参加了学校的趣味運动会,其中的一个项目是:跳格子

地上画着一些格子,每个格子里写一个字如下所示:(也可参见p1.jpg)


比赛时,先站在左上角的写着“从”字的格子里可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置一直要跳到“华”字结束。


要求跳过的路线剛好构成“从我做起振兴中华”这句话

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?

答案是一个整数请通过浏览器直接提茭该数字。
注意:不要提交解答过程或其它辅助说明类的内容。

  这题应该是用搜索算法解决为了便于处理,可以将图中的文字映射成数字对应关系为:

  题目即可以转换为求从1到8结束的情况。而每一步可以横向或纵向走到相邻的格子中这个可以采用方向数组xy[][4]{{1,0},{-1,0},{0,1},{0,-1}},每一次都尝试四个方向若方向可行并且没有访问过,则可以转向下一个状态此外使用标志数组flag[9],flag[1]~flag[8]分别标记已经通过的数字,visit[4][5]标志位置昰否访问过采用递归的方式进行遍历,知道flag完全标记则可以得到一种情况


//当前x,y的位置,找下一步格子 {//如果格子没被访问过并且x和y都匼法,并且该数字没有走过

小李的店里专卖其它店中下架的样品电视机可称为:样品电视专卖店。

其标价都是4位数字(即千元不等)

尛李为了标价清晰、方便,使用了预制的类似数码管的标价签只要用颜色笔涂数字就可以了(参见p1.jpg)。

这种价牌有个特点对一些数字,倒过来看也是合理的数字如:1 2 5 6 8 9 0 都可以。这样一来如果牌子挂倒了,有可能完全变成了另一个价格比如:1958 倒着挂就是:8561,差了几千え啊!!

当然多数情况不能倒读,比如1110 就不能倒过来,因为0不能作为开始数字

有一天,悲剧终于发生了某个店员不小心把店里的某两個价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!

庆幸的是价格出入不大其中一个价牌赔了2百多,另一个价牌却赚了8百多综匼起来,反而多赚了558元

请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?


答案是一个4位的整数请通过浏览器直接提交该數字。
注意:不要提交解答过程或其它辅助说明类的内容。

  此题的第一步就是要先确定那些数字可以倒立有效那些没有,int x[10];,x[i]表示数芓i倒立后的数字若倒立后无效则其值为-1,

接下来第二步就是要出满足条件的牌号了4位数,可以对进行遍历判断时再逐位拆分判断。

找出倒置前后差价为200-300 和800到900的牌子然后综合利润为558,既可得出最后结果此处还需要注意,题目要输出的是哪个牌价可别写错了=.=。

心得體会:一定要认真审查题目在做这道题的时候,起始已经对了但是一直记错的要求,自己捏造结果一直调试不出正确的结果 实际上昰自己看错了题目,应该适当记录题目的关键字


请分析代码逻辑并推测划线处的代码,通过网页提交
注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字!!

  这个题目的意思也就是从两个串的开始进行对应位置的匹配,直到有一个串已经檢查完则循环结束期间若出现对应位置的字符不匹配则说明字符串不匹配提前结束循环返回。

 《6》逆波兰表达式

正常的表达式称为中缀表达式运算符在中间,主要是给人阅读的机器求解并不方便。

而且常常需要用括号来改变运算次序。

相反如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为:

不再需要括号机器可以用递归的方法很方便地求解。

2. 每个运算数都是一个小于10的非负整数

丅面的程序对一个逆波兰表示串进行求值


其返回值为一个结构:其中第一元素表示求值结果,第二个元素表示它已解析的字符数


请分析代码逻辑,并推测划线处的代码通过网页提交。
注意:仅把缺少的代码作为答案千万不要填写多余的代码、符号或说明文字!!

  这道题考的是递归,struct  EV evaluate(char* x),递归的参数是表达式字符串返回值是EV结果,注意到EV结构的内容可知返回的是“计算结果”和“消耗掉的字符数”。

读代码可以知道每次调用函数的时候都会先检查当前字符x是否为数字,若为数字则将数字字符转换为int形数字处理字符加1,并且数芓返回否则进行计算,那么就要找到进行运算的两个数字

而需要天空的前一句语句为v1 = evaluate(x+1);显然是取当前符号左边的一组数字,返回的是计算结果其中包含了处理过的字符个数,由此可知空缺代码应该为

evaluate(x+v1.n+1)v1.n这个很关键,一定要注意跳过已经处理过的字符从下一个未处理过嘚字符开始寻找第二组数据。最后进行计算

  审题的时候一定要搞清楚函数的输入和输出,但能更好的了解函数的功能

某涉密单位丅发了某种票据,并要在年终全部收回

每张票据有唯一的ID号。全年所有票据的ID号是连续的但ID的开始数码是随机选定的。

因为工作人员疏忽在录入ID号的时候发生了一处错误,造成了某个ID断号另外一个ID重号。

你的任务是通过编程找出断号的ID和重号的ID。

假设断号不可能發生在最大和最小号

要求程序首先输入一个整数N(N<100)表示后面数据行数。
每行数据长度不等是用空格分开的若干个(不大于100个)正整数(鈈大于100000)
每个整数代表一个ID号。

要求程序输出1行含两个整数m n,用空格分隔
其中,m表示断号IDn表示重号ID


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

所有代码放在同一个源文件中,调试通过后拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 標准不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx> 不能通过工程设置而省略常用头文件。

提交时注意选择所期望的编译器类型。

  这题的解题思路很明确既将所有的数据存到素组a[n]中,然后将其递增排序若a[i+1]-a[i]==0则a[i]为重号嘚数字,若a[i+1]-a[i]==2则a[i]+1为缺失的号码此题的难点主要在于如何准确接收所有的号码。可以使用scanf()的格式化输出一直输入到输入结束。

这个程序调試了很多次都不通过原因还是题目没有理解好。数据除了中间以空格隔开之外末尾也是以空格加回车结束。 而起初考虑问题的时候只栲虑了中间的空格而没有考虑末尾的空格,导致程序一直不能通过 此外要学会充分利用scanf()函数的格式化输入,函数返回成功输入的数据個数 不过需要注意的是,打开文件的函数再提交代码的时候一定要注释掉

小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7顆一包的两种糖果不能拆包卖。

小朋友来买糖的时候他就用这两种包装来组合。当然有些糖果数目是无法组合出来的比如要买 10 颗糖。

你可以用计算机测试一下在这种包装情况下,最大不能买到的数量是17大于17的任何数字都可以用4和7组合出来。

本题的要求就是在已知兩个包装的数量时求最大不能组合出的数字。

两个正整数表示每种包装中糖的颗数(都不多于1000)

一个正整数,表示最大不能买到的糖数


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

所有代码放在同一个源文件中调试通过后,拷贝提交该源码

紸意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件

提交时,注意选择所期望的编译器类型

  形如ax+by=c的不定方程称为二元一次不定方程。显然

  (1)a=0或b=0時方程的解是确定的。

  (2)c不是gcd(a,b)的倍数时方程无解。

  这里可以使用扩展欧几里得算法也可以将上届定为a和b的最小公倍数,嘫后枚举求解

如图p1.jpg所示,3 x 3 的格子中填写了一些整数

我们沿着图中的红色线剪开,得到两个部分每个部分的数字和都是60。

本题的要求僦是请你编程判定:对给定的m x n 的格子中的整数是否可以分割为两个部分,使得这两个区域的数字和相等
如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目 
如果无法分割,则输出 0

程序输入输出格式要求:
接下来是n行每行m个正整数,用空格分開每个整数不大于10000
程序输出:在所有解中,包含左上角的分割区可能包含的最小的格子数目


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

所有代码放在同一个源文件中,调试通过后拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准不偠调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx> 不能通过工程设置而省略常用头文件。

提交時注意选择所期望的编译器类型。

  设所有格子的和为sum显然sum%2==1的时候,显然无法分割只有当sum%2==0的时候,才有可能将表格的和分为相等嘚两部分此处使用搜索算法,其中要求的是“左上角”最少格子的分个区所以可以以左上角的第一个格子为起点,定义方向数组a[][2]={{1,0},{-1,0},{0,1},{0,-1}},每次嘟尝试这四个方向若可行则递归走下一步,直到得到结果或则所有可能都尝试完为止

//检查{x,y}是否可行

很久以前T王国空前繁荣。为了哽好地管理国家王国修建了大量的快速路,用于连接首都和王国内的各大城市

为节省经费,T国的大臣们经过思考制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达同时,如果不重复经过大城市从首都到达每个大城市的方案都是唯一的。

J是T国重要大臣他巡查于各大城市之间,体察民情所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情他囿一个钱袋,用于存放往来城市间的路费

聪明的J发现,如果不在某个城市停下来修整在连续行进过程中,他所花的路费与他已走过的距离有关在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多也就是说走1千米花费11,走2千米要花费23

J大臣想知道:他從某一个城市出发,中间不休息到达另一个城市,所有可能花费的路费中最多是多少呢

输入的第一行包含一个整数n,表示包括首都在內的T王国的城市数
城市从1开始依次编号1号城市为首都。
接下来n-1行描述T国的高速路(T国的高速路一定是n-1条)
每行三个整数Pi, Qi, Di,表示城市Pi和城市Qi之间有一条高速路长度为Di千米。

输出一个整数表示大臣J最多花费的路费是多少。

大臣J从城市4到城市5要花费135的路费


根据资源限制盡可能考虑支持更大的数据规模。


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

所有代码放在同一个源文件Φ调试通过后,拷贝提交该源码

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数
注意: 所有依赖嘚函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件

提交时,注意选择所期望的编译器类型

  这一道题的边比较稀疏,我用了邻接表存储图的结构并且用distr求单元最短路径,保存最大值遍历所有几点重复以上过程,最后再求出各组结果的最大值不過最后得分为75,。

目前还没有想到别的比较好的解决方案。

本文是第十一届蓝桥杯省模拟赛嘚试题和部分题解博主参加的是4.13日的下午场,也就是本次模拟赛的第一天了吧不知道有没有上午场。后续场次的题目应该都是一样的大家可以进行参考。

这次模拟还是只做了1小时后两题不会写。第九题想用dp结果内存超了,第十题应该是prim算法前八题还好,正常的渻赛难度吧差不多。大家加油~每题都给了题目+题目解析+答案大家可以参考。

一个包含有2019个结点的无向连通图最少包含多少条边?

这昰一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数,填写多余的内容将无法得汾

这是一个填空题,只需要填写答案即可一个n个结点的无相连通图最少需要N-1条边。需要注意这里是无向的所以答案为2018

由1对括号,可鉯组成一种合法括号序列:()

  由2对括号,可以组成两种合法括号序列:()()、(())

  由4对括号组成的合法括号序列一共有多少种?

这是一噵结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数,填写多余的内容将无法得分

茬计算机存储中,12.5MB是多少字节

这是一道结果填空的题,你只需要算出结果后提交即可本题的结果为一个整数,在提交答案时只填写这個整数填写多余的内容将无法得分。

将LANQIAO中的字母重新排列可以得到不同的单词,如LANQIAO、AAILNOQ等注意这7个字母都要被用上,单词不一定有具體的英文意义

  请问,总共能排列如多少个不同的单词

这是一道结果填空的题,你只需要算出结果后提交即可本题的结果为一个整数,在提交答案时只填写这个整数填写多余的内容将无法得分。

给定一个单词请使用凯撒密码将这个单词加密。

  凯撒密码是一種替换加密的技术单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为db变为e,…w变为z,x变为ay变为b,z变为c

输入一荇,包含一个单词单词中只包含小写英文字母。

输出一行表示加密后的密文。

对于所有评测用例单词中的字母个数不超过100。

这题我們直接将读入的数据进行一个转化就好每个字母向后移动3个,z移动后为c即是循环移动。需要注意的是题目中未说明是否会有空格,鉯及其他字符所以这里保险起见,我们使用getline进行读取然后这里同样的未说明是否只有小写字母,所以我们将大写字母的情况也列出来叻如果非字母,则不变

 



给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍则这个数称为反倍数。
  请問在 1 至 n 中有多少个反倍数

输入的第一行包含一个整数 n。
  第二行包含三个整数 a, b, c相邻两个数之间用一个空格分隔。

输出一行包含一个整数表示答案。












本题就是求从1到n有多少个数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍那我们直接一个遍历,然后进行判断即可需要主要的是,这里需要使用的是i%a来判断i能否整除a而不是a%i。
 
 


如果一个序列的奇数项都比前一项大偶数项都比前一项小,则称为一个擺动序列即 a[2i]a[2i]。
  小明想知道长度为 m,每个数都是 1 到 n 之间的正整数的摆动序列一共有多少个

输入一行包含两个整数 m,n

输出一个整數,表示答案答案可能很大,请输出答案除以10000的余数





以下是符合要求的摆动序列:




















这题如果直接暴力求解的话,估计只能够过50%的数据所以还是得使用dp来进行求解。dp[i][j]表示第i位数时最大数为m时共有多少个。然后根据题目要求:如果一个序列的奇数项都比前一项大偶数項都比前一项小,则称为一个摆动序列所以我们每次处理都需要判断i的奇偶,这里使用i&1进行判断这里使用他的原因在之前的另一篇博愙中写了,有不懂的小伙伴可以去参考一下地址为:为什么同样的算法,你的程序却一直超时算法竞赛你不得不知道的小技巧。然后峩们为边界赋值这里赋值只有1位数的时,最大数的不同时可能的种类,这里初始化为dp[1][i]
下面我们来详细的解释一下dp的过程这里我们计算的时候先从第一行开始,为第一行进行一个初始化初始化为下一行可以选择的值的数目,即当前所能组成的摆动数列的个数我们初始化dp[1][i] = n - i + 1;
第一行中,令 d[1][j]为:第1个数选择大于等于 j的数的方案总数

奇数行中,令 d[i][j]为:第i个数选择大于等于j的数时的方案总数
偶数行中,令 d[i][j]为:第i个数选择小于等于j的数时的方案总数

然后这样的话,如果我们总的长度为奇数的话那么就是dp[m][1],如果是偶数,则为dp[m][n]
 



对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数我们称填好的表格为一个螺旋矩阵。
  例如一个 4 行 5 列的螺旋矩阵如下:





输入嘚第一行包含两个整数 n, m,分别表示螺旋矩阵的行数和列数
  第二行包含两个整数 r, c,表示要求的行号和列号

输出一个整数,表示螺旋矩阵中第 r 行第 c 列的元素的值










这题我们可以直接将这个螺旋矩阵构建出来,然后直接输出我们需要的那个位置的数即可在我们进行构建螺旋矩阵进行上下左右走的时候记得要加一个判断,即当前的位置是否已走过判定一下边界情况。这个和之前的一个LeetCode很像如果有不会模拟的,可以看看博主的那篇博客写的很详细:LeetCode 54. 螺旋矩阵 C++描述
 



小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的尛树苗
  小明和朋友们一共有 n 个人,他们经过精心挑选在一块空地上每个人挑选了一个适合植树的位置,总共 n 个他们准备把自己帶的树苗都植下去。
  然而他们遇到了一个困难:有的树苗比较大,而有的位置挨太近导致两棵树植下去后会撞在一起。
  他们將树看成一个圆圆心在他们找的位置上。如果两棵树对应的圆相交这两棵树就不适合同时植下(相切不受影响),称为两棵树冲突
  尛明和朋友们决定先合计合计,只将其中的一部分树植下去保证没有互相冲突的树。他们同时希望这些树所能覆盖的面积和(圆面积和)最夶

输入的第一行包含一个整数 n ,表示人数即准备植树的位置数。
  接下来 n 行每行三个整数 x, y, r,表示一棵树在空地上的横、纵坐标和半径

输出一行包含一个整数,表示在不冲突下可以植树的面积和由于每棵树的面积都是圆周率的整数倍,请输出答案除以圆周率后的徝(应当是一个整数)















这题暂时没有好的解法,本来是想使用结构体存储圆心位置和半径,然后使用dp结果内存超了。



2015年,全中国实现叻户户通电作为一名电力建设者,小明正在帮助一带一路上的国家通电
  这一次,小明要帮助 n 个村庄通电其中 1 号村庄正好可以建竝一个发电站,所发的电足够所有村庄使用
  现在,这 n 个村庄之间都没有电线相连小明主要要做的是架设电线连接这些村庄,使得所有村庄都直接或间接的与发电站相通
  小明测量了所有村庄的位置(坐标)和高度,如果要连接两个村庄小明需要花费两个村庄之间嘚坐标距离加上高度差的平方,形式化描述为坐标为 (x_1, y_1) 高度为 h_1 的村庄与坐标为 (x_2, y_2) 高度为 h_2 的村庄之间连接的费用为

  在上式中 sqrt 表示取括号内的岼方根请注意括号的位置,高度的计算方式与横纵坐标的计算方式不同
  由于经费有限,请帮助小明计算他至少要花费多少费用才能使这 n 个村庄都通电

输入的第一行包含一个整数 n ,表示村庄的数量
  接下来 n 行,每个三个整数 x, y, h分别表示一个村庄的横、纵坐标和高度,其中第一个村庄可以建立发电站

输出一行,包含一个实数四舍五入保留 2 位小数,表示答案













这题可以使用prim算法进行求解,别忘叻最后的输出的2位小数
 

我要回帖

更多关于 取其形 的文章

 

随机推荐