/* 有一群海盗(不多于20人),在船上比拼酒量.过程如下:打开一瓶酒, 所有在场的人平分喝下,有几个人倒下了.再打开一瓶酒平分,又有倒下的, 再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中. 当第4瓶酒平分喝下后,大家都倒下了. 等船长醒来,发现海盗船搁浅了. 他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......” 请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人. 如果有多个可能的答案,请列出…
/* 某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度. 答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理 每位选手都有一个起步的分数为10分. 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗? 如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示.例如:0010110011 就是可能的情况. 答案…
/* 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来. 你利用计算机的优势,找到破解的答案. 把 ABCDE所代表的数字写出来. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream…
/* 微生物增殖 题目: 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y. 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目. 如果X=10,Y=90呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目. 题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质! 也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最…
/* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void test(int x[]) { ]* + x[]* + x[]* + x[]; ]* + x[]* + x[]* + x[]* + x[]; ==b) printf("%d / %d\n", a, b); } void f(int x[], int k) { int i,t; ){ test(x…
/* 描述:正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6. 输入 ---- 一个由x()|组成的正则表达式.输入长度不超过100,保证合法. 输出 ---- 这个正则表达式能接受的最长字符串的长度. 例如, 输入: ((xx|xxx)x|(x|xx))xx 程序应该输出: 6 */ #include<cstdio>…
/* 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上. 它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母. 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间. X星球的居民有点懒,不愿意费力思考. 他们更喜欢玩运气类的游戏.这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房间内. 玩家一定要按照地上的字母移动. 迷宫地图如下: ------------ UDDL…
/* 标题:最大公共子串 最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4. 下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法. 请分析该解法的思路,并补全划线部分缺失的代码. */ #include <stdio.h> #include <strin…
/* 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AACBB" .... 现在,小明正在思考一个问题: 如果每个字母的个数有限定,能组成多少个已知长度的串呢? 他请好朋友来帮忙,很快得到了代码,解决方案超级简单,然而最重要的部分却语焉不详. 请仔细分析源码,填写划线部分缺少的内容. */ #include <stdio.h> // a个A,b个…
/* X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征. 你的任务是: 给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子. 输入一行,表示现在看到的密码串(长度不大于1000) 要求输出一个正整数,表示至少脱落了多少个种子. 例如,输入: ABCBA 则程序应该输出:…
/* 有12张连在一起的12生肖的邮票,规格是3*4,即: 1111 1111 1111 现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) */ /* 思路: 先将所有五个一组的情况遍历,然后用广度优先判断是否连通. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<…
/* 有一个含有10个格子的图形,现用0~9填充,连续的数不能填充在相邻的格子中(包括对角线相邻). 现每个数只能填写一次,问有多少种填充方法? 0111 1111 1110 (1表示有格子,0表示没格子) 解题思想:深度优先遍历即可 */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<v…
/* 标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式. 请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式). */ #include<cstdio> #include<cstring> #include<a…
/* 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”. 小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊.” 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数字,请通过浏览器提交答案.不要书写任何多余的内容. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<…
/* 标题:切面条 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间切一刀,会得到多少面条呢? 答案是个整数,请通过浏览器提交答案.不要填写任何多余的内容. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<st…
/* 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符号表示乘方的意思) 对于一个给定的正整数,可能存在多种平方和的表示法. 要求你对4个数排序: 0 <= a <= b <= c <= d 并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法 程序输…
/* 下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0 如果最后一位是0,则原数字保持不变. 如果采用代码中的测试数据,应该输出: 00000000000000000000000001100111 -> 00000000000000000000000001100000 00000000000000000000000000001100 -> 00000000000000000000000000001100 请仔细阅读程序,填写划线部分缺少的代码. */ #include <st…
/* 排序在各种场合经常被用到. 快速排序是十分常用的高效率的算法. 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它. 这样,排序问题就被分割为两个子区间. 再分别对子区间排序就可以了. 下面的代码是一种实现,请分析并填写划线部分缺少的代码. */ #include <stdio.h> void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t;…
/* 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<st…
/* 某君新认识一网友. 当问及年龄时,他的网友说: “我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种可能情况? 提示:30岁就是其中一种可能哦. 请填写表示可能情况的种数. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. */ #include<cstdio> #include<cstring> #include<algorithm> #include<ios…
/* 乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料, 并且可以一直循环下去(但不允许暂借或赊账). 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料. 输入:一个整数n,表示开始购买的饮料数量(0 < n < 10000) 输出:一个整数,表示实际得到的饮料数 例如: 用户输入: 100 程序应该输出: 149 用户输入: 101 程序应该输出: 151 资源约定: 峰值内存消耗 < 25…
/* StringInGrid函数会在一个指定大小的格子中打印指定的字符串. 要求字符串在水平.垂直两个方向上都居中. 如果字符串太长,就截断. 如果不能恰好居中,可以稍稍偏左或者偏上一点. 下面的程序实现这个逻辑,请填写划线部分缺少的代码. 对于题目中数据,应该输出: +------------------+ | | | abcd1234 | | | | | +------------------+ */ #include <stdio.h> #include <string.h>…
/* 小明发现了一个奇妙的数字.它的平方和立方正好把0~9的10个数字每个用且只用了一次. 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容. */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #inclu…
/* 方程: a^2 + b^2 + c^2 = 1000 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解. 你能算出另一组合适的解吗? 请填写该解中最小的数字. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. */ #include<iostream> #include<algorithm> #include<cmath> using namespace std; ; int main() { ;a<sqrt();a++) ;b…
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 3131331313,就是不是U型数字. 现在蒜头君问你,[1,100000][1,100000] 有多少U型数字? 提示:请不要输出多余的符号. import java.util.Scanner; public class Main1{ public static String mp[] = new String[…
2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考虑了DP #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> PII; const int N = 1e8+10, M = 21; LL res = 9999…
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少? [答案提交] 这是一道结果填空的题,你只需要算出结果后提交即可. 本题的结果为一…
A模拟 代码1 #include<bits/stdc++.h> using namespace std; int n = 101; int a[120][120]; int ans = 0; int main(){ //填充数组 int t = 0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j] = ++t; } } int cen = n/2+1; int p = 1; int l = 1,r=n; //上半 for(…
走廊里有 nn 盏灯,编号依次为 1,2,3,...,n,由学校电路控制中心管理.初始时,所有灯都是关闭的.某黑客入侵了学校电路控制中心,黑客想让灯忽明忽暗,进行了 n 轮操作.第 i 轮操作,会让所有编号为 ii 的倍数的灯状态反转,也就是打开的变为关闭,关闭的变为打开.现在黑客想知道,n 轮操作后,所有亮着的灯的编号之和为多少.因为答案很大,只需输出答案对 10^9+7 取模的结果. 输入格式 一个整数 n,表示灯的个数. 输出格式 一个整数,表示亮着的灯的编号之和对 10^9+7 取模的结…
题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少的价格修建高速公路,使得所有城市可以通过若干条高速公路互相达到.现在请你求出 n=2019 时,一共有多少不同的方案,能让所有城市连通并且造价最低.方案数可能很大,你只需输出对 10^9+7取模的结果. 样例输入 无 样例输出 无 思路: 这一题的主要考点是位运算和最小生成树.分析:根据题意我们可以…