常用算法题目
1.算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!
种。如:给定A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA 一共3!=3*2=6种情况。
用程序实现输入的N个字符的全排列并输出。
2.串的简单处理
串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。
本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
This Is A 99_cat
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。
每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。
用程序实现该串处理操作功能。
3.猜算式
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
3. Excel地址转换
Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。
你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来有n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。
程序则输出n行数据,每行是转换后的常规地址表示法。
例如:用户输入:
2
R12C4
R5C255
则程序应该输出:
D12
IU5
4.手机尾号
/*
30年的改革开放,给中国带来了翻天覆地的变化。2011全年中国手机产量约为11.72亿部。手机已经成为百姓的基本日用品!给手机选个好听又好记的号码可能是许多人的心愿。
但号源有限,只能辅以有偿选号的方法了。
这个程序的目的就是:根据给定的手机尾号(4位),按照一定的规则来打分。其规则如下:
1. 如果出现连号,不管升序还是降序,都加5分。例如:5678,4321都满足加分标准。
2. 前三个数字相同,或后三个数字相同,都加3分。例如:4888,6665,7777都满足加分的标准。
注意:7777因为满足这条标准两次,所以这条规则给它加了6分。
3. 符合AABB或者ABAB模式的加1分。例如:2255,3939,7777都符合这个模式,所以都被加分。
注意:7777因为满足这条标准两次,所以这条标准给它加了2分。
4. 含有:6,8,9中任何一个数字,每出现一次加1分。例如4326,6875,9918都符合加分标准。其中,6875被加2分;9918被加3分。
尾号最终得分就是每条标准的加分总和!
要求程序从标准输入接收数据,在标准输出上输出结果。
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行4位一组的数据,就是等待计算加分的手机尾号。
例如,输入:
14
3045
….
…..
6789
8866
则输出:
….
…
8
5
*/
5. 放麦子
/*
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,
问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,
在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,
在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,
直到放完所有棋盘格(国际象棋共有64格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!
请你借助计算机准确地计算,到底需要多少粒麦子。
答案写在“解答.txt”中,不要写在这里!
*/
6.猜生日
/*
今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。
休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”“把我出生的年月日连起来拼成一个8位数(月、日不足两位前补0)正好可以被今天的年、月、日整除!”
他想了想,又补充到:“再给个提示,我是6月出生的。”
根据这些信息,请你帮小明算一下,他叔叔的出生年月日。
答案写在“解答.txt”中,不要写在这里!
格式是年月日连成的8位数。
例如,如果是1948年6月12日,就写:19480612
*/
7.填算式
/*
看这个算式:
☆☆☆+ ☆☆☆= ☆☆☆
如果每个五角星代表1 ~ 9 的不同的数字。
这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意:
111 + 222 = 333 是错误的填写法!
因为每个数字必须是不同的!
也就是说:1~9中的所有数字,每个必须出现且仅出现一次!
注意:
不包括数字“0”!
注意:
满足加法交换率的式子算两种不同的答案。
所以答案肯定是个偶数!
注意:
只要求计算不同的填法的数目
不要求列出所有填写法
更不要求填写源代码!
*/
8.火柴游戏
/*
【编程题】(满分34分)
这是一个纵横火柴棒游戏。如图[1.jpg],在3x4的格子中,游戏的双方轮流放置火柴棒。其规则是:
1. 不能放置在已经放置火柴棒的地方(即只能在空格中放置)。
2. 火柴棒的方向只能是竖直或水平放置。
3. 火柴棒不能与其它格子中的火柴“连通”。所谓连通是指两根火柴棒可以连成一条直线,且中间没有其它不同方向的火柴“阻拦”。
例如:图[1.jpg]所示的局面下,可以在C2位置竖直放置(为了方便描述格子位置,图中左、下都添加了标记),
但不能水平放置,因为会与A2连通。同样道理,B2,B3,D2此时两种方向都不可以放置。但如果C2竖直放置后,
D2就可以水平放置了,因为不再会与A2连通(受到了C2的阻挡)。
4. 游戏双方轮流放置火柴,不可以弃权,也不可以放多根。直到某一方无法继续放置,则该方为负(输的一方)。
游戏开始时可能已经放置了多根火柴。
你的任务是:编写程序,读入初始状态,计算出对自己最有利的放置方法并输出。
如图[1.jpg]的局面表示为:
00-1
-000
0100
即用“0”表示空闲位置,用“1”表示竖直放置,用“-”表示水平放置。
【输入、输出格式要求】
用户先输入整数n(n<100), 表示接下来将输入n 种初始局面,每种局面占3行(多个局面间没有空白行)。
程序则输出:每种初始局面情况下计算得出的最佳放置法(行号+列号+放置方式)。
例如:用户输入:
2
0111
-000
-000
1111
----
0010
则程序可以输出:
00-
211
不难猜出,输出结果的含义为:
对第一个局面,在第0行第0列水平放置
对第二个局面,在第2行第1列垂直放置
注意:
行号、列号都是从0开始计数的。
对每种局面可能有多个最佳放置方法(解不唯一),只输出一种即可。
例如,对第一个局面,001 也是正解;最第二个局面,201也是正解。
*/
9. 古代赌局
/*
* 【编程题】(满分23分)
俗话说:十赌九输。因为大多数赌局的背后都藏有阴谋。不过也不尽然,有些赌局背后藏有的是:“阳谋”。
有一种赌局是这样的:桌子上放六个匣子,编号是1至6。多位参与者(以下称玩家)可以把任意数量的钱押在某个编号的匣子上。
所有玩家都下注后,庄家同时掷出3个骰子(骰子上的数字都是1至6)。输赢规则如下:1. 若某一个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目赔付(即1比1的赔率)。
2. 若有两个骰子上的数字与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的2倍赔付(即1比2的赔率)。
3. 若三个骰子上的数字都与玩家所押注的匣子号相同,则玩家拿回自己的押注,庄家按他押注的数目的6倍赔付(即1比6的赔率)。
4. 若玩家所押注匣子号与某个骰子示数乘积等于另外两个骰子示数的乘积,则玩家拿回自己的押注,庄家也不赔付(流局)。
5. 若以上规则有同时满足者,玩家可以选择对自己最有利的规则。规则执行后,则庄家收获所有匣子上剩余的押注。
乍一看起来,好像规则对玩家有利,庄家吃亏。但经过大量实战,会发现局面很难说,于是怀疑是否庄家做了手脚,
庄家则十分爽快地说:可以由玩家提供骰子,甚至也可以由玩家来投掷骰子。
你的任务是:通过编程模拟该过程。模拟50万次,假定只有1个玩家,他每次的押注都是1元钱,其押注的匣子号是随机的。
再假定庄家有足够的资金用于赔付。最后计算出庄家的盈率(庄家盈利金额/押注总金额)。【输入、输出格式要求】
程序无输入,程序运行输出庄家的盈率,四舍五入保留到小数后3位。
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
*/
10.源码变换
/*
超文本标记语言(即HTML),是用于描述网页文档的一种标记语言。
HTML通过文本来描述文档显示出来应该具有的“样子”。它主要通过标签来定义对象的显示属性或行为。
如果把java的源文件直接拷贝到HTML文档中,用浏览器直接打开,会发现本来整齐有序的源文件变成了一团遭。
这是因为,文本中的许多回车和空格都被忽略了。而有些符号在html中有特殊的含义,引
起了更复杂的局面。
为了源文件能正常显示,我们必须为文本加上适当的标签。对特殊的符号进行转义处理。常用的有:
HTML 需要转义的实体:
& ---> &
空格--->
< ---> <
> ---> >
" ---> "
此外,根据源码的特点,可以把TAB 转为4个空格来显示。
TAB --->
为了显示为换行,需要在行尾加
标签。
为了显示美观,对关键字加粗显示,即在关键字左右加标签。比如:
public
对单行注释文本用绿色显示,可以使用标签,形如:
//这是我的单行注释!
注意:如果“//”出现在字符串中,则注意区分,不要错误地变为绿色。
不考虑多行注释的问题/* .... */ /*或*/ /** .... */
/*
你的任务是:编写程序,把给定的源文件转化为相应的html表达。
【输入、输出格式要求】
与你的程序同一目录下,存有源文件a.txt,其中存有标准的java源文件。要求编写程序把它转化为b.html。
例如:目前的a.txt 文件与b.html 文件就是对应的。可以用记事本打开b.html查看转换后的内容。用浏览器打开b.html则可以看到显示的效果。
注意:实际评测的时候使用的a.txt与示例是不同的。
*/
13.数量周期
/*
复杂现象背后的推动力,可能是极其简单的原理。科学的目标之一就是发现纷
繁复杂的自然现象背后的简单法则。爱因斯坦的相对论是这方面的典范例证。
很早的时候,生物学家观察某区域某种昆虫的数量(称为虫口数)之逐年变化规律,
就十分迷惑:有的时候是逐渐增多达到一个平衡值。有的时候在两个数字间周期跳动。
有的时候则进入一片混乱,类似随机数字一样变化(称为混沌现象)。
慢慢地,人们从数学中更清晰地观察到了这一现象,并因此开创了:符号动力学、非线性动力学等研究领域。
一个著名的虫口数目简化模型如下:
x' = x * (1 - x) * r
这里,x x' r 都是浮点数。
其中,x 表示当年的虫口数,x' 表示下一年的虫口数。
它们的取值范围在0 与 1 之间,实际上表示的是:虫口的总数占环境所能支持的最大数量的比率。
r 是常数(环境参数),r的取值范围在[0,4]。
令人惊讶的是:这个简单的迭代公式有着不同寻常的神秘性质!
一般来说,多次迭代后,虫口数的稳定模式与x的初始值无关,而与r 有关!
例如:无论x初始值是多少,当r = 2.5 的时候,x 多次迭代后会趋向于0.6。
而当r = 3.2 的时候,x 的值会趋向于在0.799 与0.513 之间周期性摆动。
那么,r = 3.62 的时候,你观察到有什么周期现象发生吗?
不需要提交源代码,只要写出你的结论即可!
答案写在:“解答.txt”中,不要写在这里。
*/
14.提取子串
/*
串“abcba”以字母“c”为中心左右对称;串“abba”是另一种模式的左右对称。
这两种情况我们都称这个串是镜像串。特别地,只含有1个字母的串,可以看成是第一种模式的镜像串。
一个串可以含有许多镜像子串。我们的目标是求一个串的最大镜像子串(最长的镜像子串),如果有多个最大镜像子串,对称中心靠左的优先选中。例如:“abcdeefghhgfeiieje444k444lmn”的最大镜像子串是:“efghhgfe”
下面的静态方法实现了该功能,请仔细阅读并分析代码,填写空白处的代码,使得程序的逻辑合理,结果正确。
15.取球游戏
/*
今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。
我们约定:
每个人从盒子中取出的球的数目必须是:1,3,7或者8个。
轮到某一方取球时不能弃权!
A先取球,然后双方交替取球,直到取完。
被迫拿到最后一个球的一方为负方(输方)
请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?
程序运行时,从标准输入获得数据,其格式如下:
先是一个整数n(n<100),表示接下来有n个整数。然后是n个整数,每个占一行(整数<10000),表示初始球数。
程序则输出n行,表示A的输赢情况(输为0,赢为1)。
例如,用户输入:
4
1
2
10
18
则程序应该输出:
1
1
*/
16.密码发生器
/*
在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,
容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了...
这个程序的任务就是把一串拼音字母转换为6位数字(密码)。
我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。
变换的过程如下:
第一步. 把字符串6个一组折叠起来,比如wangximing则变为:
wangxi
ming
第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:
228 202 220 206 120 105
第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,
就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12 => 1+2=3
上面的数字缩位后变为:344836, 这就是程序最终的输出结果!
要求程序从标准输入接收数据,在标准输出上输出结果。
输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。
输出格式为:n行变换后的6位密码。
例如,输入:
5
zhangfeng
wangximing
jiujingfazi
woaibeijingtiananmen
haohaoxuexi
则输出:
772243
344836
297332
716652
875843
*/
17.转方阵
/*
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
*/
18.古堡算式
/*
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
*/
19.微生物增殖
/*
假设有两种微生物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 种群灭绝的最后一根稻草!
请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!
*/
20.输入信用卡号码
/*
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
则奇数、偶数位(用红色标出)分布:5432123456788881
奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。
请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
比如,用户输入:356827027232780
程序输出:成功
*/
21.输入日期
/*
从键盘输入一个日期,格式为yyyy-M-d
要求计算该日期与1949年10月1日距离多少天
例如:
用户输入了:1949-10-2
程序输出:1
用户输入了:1949-11-1
程序输出:31
*/
22.顺时针螺旋填入
/*
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4,则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/
23. Playfair密码
/*
* 一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),
* 然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下:
1.首先按行填入密钥串。
2.紧接其后,按字母序按行填入不在密钥串中的字母。
3.由于方阵中只有25个位置,最后剩下的那个字母则不需变换。
如果密钥为youandme,则该方阵如下:
y o u a n
d m
e b c
f g h i j
k l p q r
s t v w x
在加密一对字母时,如am,在方阵中找到以这两个字母为顶点的矩形(红色字体):
y o u a n
d m
e b c
f g h i j
k l p q r
s t v w x
这对字母的加密字母为该矩形的另一对顶点,如本例中为ob。
请设计程序,使用上述方法对输入串进行加密,并输出加密后的串。
另外有如下规定:
1、一对一对取字母,如果最后只剩下一个字母,则不变换,直接放入加密串中;
2、如果一对字母中的两个字母相同,则不变换,直接放入加密串中;
3、如果一对字母中有一个字母不在正方形中"如z",则不变换,直接放入加密串中;
4、如果字母对出现在方阵中的同一行或同一列,如df或hi,则只需简单对调这两个字母,即变换为fd或ih;
5、如果在正方形中能够找到以字母对为顶点的矩形,假如字母对为am,则该矩形的另一对顶点字母中,
与a同行的字母应在前面,在上例中应是ob;同样若待变换的字母对为ta,则变换后的字母对应为wo;
6、本程序中输入串均为小写字母,并不含标点、空格或其它字符。
解密方法与加密相同,即对加密后的字符串再加密,将得到原始串。
要求输入形式如下:
从控制台输入两行字符串,第一行为密钥单词(长度小于等于25),第二行为待加密字符串(长度小于等于50),
两行字符串末尾都有一个回车换行符,并且两行字符串均为小写字母,不含其它字符。
在标准输出上输出加密后的字符串。
例如,若输入:
youandme
welcometohangzhou
则表示输入的密钥单词为youandme,形成的正方形如上所示;待加密字符串为welcometohangzhou。
在正方形中可以找到以第一对字母we为顶点的矩形,对应另一对顶点字母为vb,因此加密后为vb,
同理可找到与字母对lc,et,oh,ho对应的顶点字母对。而字母对om位于上述正方形中的同一列,
所以直接以颠倒这两个字母来加密,即为mo,字母对an同理。字母对gz中的z不在上述正方形中,
因此原样放到加密串中。最后剩一个字母u也原样输出。
因此输出的结果为:
vbrmmomvugnagzguu
vbrmmomvugnagzguu
vbrmmomvugnagzguu
要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
*/
24.金额组合
/*
某财务部门结账时发现总金额不对头。很可能是从明细上漏掉了某1笔或几笔。
如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗?
如果有多种可能,则输出所有可能的情况。
我们规定:用户输入的第一行是:有错的总金额。
接下来是一个整数n,表示下面将要输入的明细账目的条数。
再接下来是n行整数,分别表示每笔账目的金额。
要求程序输出:所有可能漏掉的金额组合。每个情况1行。金额按照从小到大排列,中间用空格分开。
比如:
用户输入:
6
5
3
2
4
3
1
表明:有错的总金额是6;明细共有5笔。
此时,程序应该输出:
1 3 3
1 2 4
3 4
为了方便,不妨假设所有的金额都是整数;每笔金额不超过1000,金额的明细条数不超过100。
*/
25.拼出漂亮的表格
/*
* 在中文Windows环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。
比如:
┌─┬─┐
│││
├─┼─┤
│││
└─┴─┘
其实,它是由如下的符号拼接的:
左上= ┌
上= ┬
右上= ┐
左= ├
中心= ┼
右= ┤
左下= └
下= ┴
右下= ┘
垂直= │
水平= ─
本题目要求编写一个程序,根据用户输入的行、列数画出相应的表格来。
例如用户输入:
3 2
则程序输出:
┌─┬─┐
│││
├─┼─┤
│││
├─┼─┤
│││
└─┴─┘
用户输入:
2 3
则程序输出:
┌─┬─┬─┐
││││
├─┼─┼─┤
││││
└─┴─┴─┘
要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
*/
26.迷宫问题
/*
迷宫问题
对于走迷宫,人们提出过很多计算机上的解法。深度优先搜索、广度优先搜索是使用最广的方法。生活中,人们更愿意使用“紧贴墙壁,靠右行走”的简单规则。
下面的代码则采用了另一种不同的解法。它把走迷宫的过程比做“染色过程”。
假设入口点被染为红色,它的颜色会“传染”给与它相邻的可走的单元。
这个过程不断进行下去,如果最终出口点被染色,则迷宫有解。
仔细分析代码中的逻辑,填充缺少的部分。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
*/
27.数字黑洞
/*
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到
一个最大的数:65432,一个最小的数23456。
求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。
比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈。
请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。
其中5位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:[82962,75933, 63954, 61974]其中数字的先后顺序可以不考虑。
*/
28.基因牛
/*
张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛,
生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛?
以下程序模拟了这个过程,请填写缺失的代码。
*/
29.最近距离
/*
已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,
距离最近的两个点间的最小距离。请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
*/
30.字符串反转
/*
我们把“cba”称为“abc”的反转串。
求一个串的反转串的方法很多。下面就是其中的一种方法,代码十分简洁(甚至有些神秘),请聪明的你通过给出的一点点线索补充缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
*/
31.孪生素数
/*
所谓孪生素数指的就是间隔为2 的相邻素数,它们之间的距离已经近得不能再近了,
就象孪生兄弟一样。最小的孪生素数是(3, 5),
在100 以内的孪生素数还有(5, 7), (11, 13), (17, 19), (29, 31),
(41, 43), (59, 61) 和(71, 73),总计有8 组。
但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越困难。那么会不会在超过某个界限之后就再也不存在孪生素数了呢?
孪生素数有无穷多对!这个猜想被称为孪生素数猜想,至今没有被严格证明。
但借助于计算机我们确实可以找到任意大数范围内的所有孪生素数对。
下面的代码求出了正整数n以内(不含n)的所有孪生素数对的个数。
比如,当n=100的时候,该方法返回8。试补全缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
*/
32. 圆周率
/*
我国古代数学家对圆周率方面的研究工作,成绩是突出的。三国时期的刘徽、南北朝时期的祖冲之都在这个领域取得过辉煌战绩。
有了计算机,圆周率的计算变得十分容易了。如今,人们创造了上百种方法求π的值。其中比较常用且易于编程的是无穷级数法。
π/4 = 1 – 1/3 + 1/5 – 1/7 + 1/9 - …
是初学者特别喜欢的一个级数形式,但其缺点是收敛太慢。
π/2 = 1 + 1/3 +1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9 + …
是收敛很快的一个级数方法。下面的代码演示了用这种方法计算π值。请填写缺失的代码部分。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
*/
34. 泊松分酒
/*
泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。
有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。
有一次闲暇时,他提出过一个有趣的问题,后称为:“泊松分酒”。
在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。
有3个容器,容量分别为12升,8升,5升。其中12升中装满油,另外两个空着。
要求你只用3个容器操作,最后使得某个容器中正好有6升油。
下面的列表是可能的操作状态记录:
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每行3个数据,分别表示12,8,6升容器中的油量
第一行表示初始状态,第二行表示把12升倒入8升容器后的状态,第三行是8升倒入5升,...
当然,同一个题目可能有多种不同的正确操作步骤。
本题目的要求是,请你编写程序,由用户输入:各个容器的容量,开始的状态,
和要求的目标油量,程序则通过计算输出一种实现的步骤(不需要找到所有可能的方法)。
如果没有可能实现,则输出:“不可能”。
例如,用户输入:
12,8,5,12,0,0,6
用户输入的前三个数是容器容量(由大到小),接下来三个数是三个容器开始时的油量配置,
最后一个数是要求得到的油量(放在哪个容器里得到都可以)
则程序可以输出(答案不唯一,只验证操作可行性):
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每一行表示一个操作过程中的油量状态。
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
*/
35.矩形的关系。
/*
在编写图形界面软件的时候,经常会遇到处理两个矩形的关系。
如图【1.jpg】所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看【2.jpg】)。
两个矩形的并集指的是:能包含这两个矩形的最小矩形,它一定是存在的。
本题目的要求就是:由用户输入两个矩形的坐标,程序输出它们的交集和并集矩形。
矩形坐标的输入格式是输入两个对角点坐标,注意,不保证是哪个对角,
也不保证顺序(你可以体会一下,在桌面上拖动鼠标拉矩形,4个方向都可以的)。
输入数据格式:
x1,y1,x2,y2
x1,y1,x2,y2
数据共两行,每行表示一个矩形。每行是两个点的坐标。x坐标在左,y坐标在右。
坐标系统是:屏幕左上角为(0,0),x坐标水平向右增大;y坐标垂直向下增大。
要求程序输出格式:
x1,y1,长度,高度
x1,y1,长度,高度
也是两行数据,分别表示交集和并集。如果交集不存在,则输出“不存在”
前边两项是左上角的坐标。后边是矩形的长度和高度。
例如,用户输入:
100,220,300,100
150,150,300,300
则程序输出:
150,150,150,70
100,100,200,200
例如,用户输入:
10,10,20,20
30,30,40,40
则程序输出:
不存在
10,10,30,30
*/
36. 测量到的工程数据
/*
[12,127,85,66,27,34,15,344,156,344,29,47,....]
这是某设备测量到的工程数据。
因工程要求,需要找出最大的5个值。
一般的想法是对它排序,输出前5个。但当数据较多时,这样做很浪费时间。
因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5个数字,
也并不要求按大小顺序,只要找到5个就可以。
以下的代码采用了另外的思路。考虑如果手里已经抓着5个最大数,再来一个数据怎么办呢?
让它和手里的数据比,如果比哪个大,就抢占它的座位,让那个被挤出来的再自己找位子,.... 请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中
注意:只写划线处应该填的内容,划线前后的内容不要抄写。
*/
37.南北朝时
/*
* 南北朝时,我国数学家祖冲之首先把圆周率值计算到小数点后六位,比欧洲早了1100年!* 他采用的是称为“割圆法”的算法,实际上已经蕴含着现代微积分的思想。
如图【1.jpg】所示,圆的内接正六边形周长与圆的周长近似。
多边形的边越多,接近的越好!我们从正六边形开始割圆吧。
如图【2.jpg】所示,从圆心做弦的垂线,可把6边形分割为12边形。
该12边形的边长a'的计算方法很容易利用勾股定理给出。
之后,再分割为正24边形,....如此循环会越来越接近圆周。
之所以从正六边开始,是因为此时边长与半径相等,便于计算。取半径值为1,开始割圆吧!以下代码描述了割圆过程。
程序先输出了标准圆周率值,紧接着输出了不断分割过程中多边形边数和所对应的圆周率逼近值。
*/
38.数字的值返回
/*
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1
例如:
s = "abc24us43" 则返回2
s = "82445adb5" 则返回8
s = "ab" 则返回-1
*/
39. 低碳生活大奖赛
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。
答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,
你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。
例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。
*/
40.益智玩具
/*
* 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲)。
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
如图【1.jpg】是现代“山寨”版的该玩具。64个圆盘太多了,所以减为7个,
金刚石和黄金都以木头代替了......但道理是相同的。
据说完成大梵天的命令需要太多的移动次数,以至被认为完成之时就是世界末日!
你的任务是精确计算出到底需要移动多少次。
很明显,如果只有2个圆盘,需要移动3次。
圆盘数为3,则需要移动7次。
那么64个呢?
答案写在“解答.txt”中,不要写在这里!
*/
41.拼酒量
/*
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,
所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,
再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。等船长醒来,发现海盗船搁浅了。
他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...
2016蓝桥杯c-c++B组省赛试题及解析 第一题 煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:171700 #include<> int main() { int a[101] ={0}; for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i; int ans = 0; for(int j = 1 ; j < 101 ; j ++) ans += a[j]; printf("%d\n",ans); return 0; }
第二题 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:26 #include<> int main()
{ int start,end; for(start = 1 ; start < 236 ; start ++) { for( end = start ; end < 236 ; end ++ ) { int sum = 0; for(int i = start; i <= end; i ++) sum += i; if( sum == 236) { printf("start : %d end : %d\n",start,end); } } }
2018蓝桥杯C语言b组国赛真题 1.标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种。 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。 小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍, 剩下的当然都是5元面额的。 银行的工作人员有点为难,你能帮助算出:在满足小明要求的前提下,最少要换给他多少张钞票吗? (5元,2元,1元面额的必须都有,不能是0) 注意,需要提交的是一个整数,不要填写任何多余的内容。 手算都可以。。。下面是代码,答案74 1.#include 13. 2.标题:激光样式 14.x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打 出光柱。 15.安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打 开! 16.国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激 光效果? 17.显然,如果只有3台机器,一共可以成5种样式,即: 18.全都关上(sorry, 此时无声胜有声,这也算一种) 19.开一台,共3种 20.开两台,只1种 21.30台就不好算了,国王只好请你帮忙了。 22.要求提交一个整数,表示30台激光器能形成的样式种数。 23.注意,只提交一个整数,不要填写任何多余的内容。 思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。。。答案2178309 1.#include 第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i 第三题,(这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原题给出的代码就是如此) int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i<4; i++) { N[3-i] = n % 10; 1. 历届试题核桃的数量 问题描述 小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是: 1. 各组的核桃数量必须相同 2. 各组内必须能平分核桃(当然是不能打碎的) 3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式 输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30) 输出格式 输出一个正整数,表示每袋核桃的数量。 样例输入1 2 4 5 样例输出1 20 样例输入2 3 1 1 样例输出2 3 JAVA 源代码 1import java.util.Scanner; 2public class Main { 3 4public static void main(String[] args){ 5 Scanner sc=new Scanner(System.in); 6int a=sc.nextInt(); 7int b=sc.nextInt(); 8int c=sc.nextInt(); 9int i; 10for(i=1;;i++){ 11if(i%a==0&&i%b==0&&i%c==0) 12 13break; 14 } 15 System.out.println(i); 16 }} 2.基础练习Sine之舞 时间限制:1.0s 内存限制:512.0MB 问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学 好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。 输入格式 仅有一个数:N<201。 输出格式 请输出相应的表达式Sn,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。 样例输入 3 样例输出 ((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin( 3)))+1 语言JAVA 源代码17import java.util.Scanner; 18public class Main { 19private static int m; 20public static void main(String[] args){ 21 Scanner sc=new Scanner(System.in); 22 m=sc.nextInt(); 23for(int i=0;i 蓝桥杯练习系统题目汇总: 入门训练 1. Fibonacci数列 问题描述 Fibonacci数列的递推公式为:F n=F n-1+F n-2,其中F1=F2=1。 当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示F n除以10007的余数。 说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000。 参考代码:c++ 1.#include java: 1.import java.util.Scanner; 2.public class Main{ 3.public static void main(String[] args) { 4.Scanner scanner = new Scanner(System.in) ; 5.int num = scanner.nextInt() ; 6.int[] a = new int[num+2] ; 7.a[1] = a[2] = 1; 8.if(num == 1) { 9.a[num] = 1 ; 10.}else if(num == 2) { 11.a[num] = 1 ; 12.}else{ 13.for(int i = 3; i <= num; i++) { 14.a[i] = (a[i - 1] + a[i - 2] ) % 10007 ; 15.} 16.} 17.System.out.println(a[num]); 18.} 19.} 2. 实数输出 问题描述 给定圆的半径r,求圆的面积。 输入格式 输入包含一个整数r,表示圆的半径。 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明:在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。 样例输入 4 样例输出 50.2654825 数据规模与约定 1.AT89系列单片机提供了两种省电方式:分别是__空闲模式_____和 ___掉电模式______。 2.远距离传输通常应采用__串行______通信。 3.MCS-51单片机有5个中断源,2个优先级,上电复位时,__外部中 断0______中断源优先级级别最高。 4.MCS-51单片机的堆栈区只可设置在_____片内RAM ____(器),堆 栈寄存器SP是____8___位寄存器。 5.MCS-51单片机外部中断请求信号有_电平方式________和脉冲方式, 在电平方式下,当采集到INT0、INT1的有效信号为___低电平______时,激活外部中断。 6.访问89C51片外数据存储器采用的是__寄存器间接_____寻址方式。 7.进行BCD码运算时,只需要在ADD和ADDC后面紧跟一条__DA __A____指令即可。 8.计算机(微处理器)能够直接识别并执行的语言是_机器语言______。 9.十六进制数D/A转换为十进制数是___218 _____,二进制数 10110110转换为十六进制数是__B6______。 10.键盘工作方式有三种,分别是__编程扫描______、___定时扫描 ______和中断扫描方式。 11.A/D转换的基本功能是把___模拟量______变成数字量。 12.溢出标志OV只有在进行___符号数______加法运算时才有意 义,OV=0表示加法运算结果__正确_____,OV=1表示加法运算结果超出了_________所能表达的符号数有效范围。 13.MCS51单片机的外部中断信号请求信号若设定为电平方式,只 有在中断请求引脚上采样到有效的___低电子______信号时,才能激活外部中断,而在脉冲方式时,只有在中断请求引脚上采样到脉冲的____后沿负跳_____有效信号时,才能激活外中断。 14.MCS51单片机的一个机器周期包含了___6______个状态周期, 每个状态周期又可划分为___2______拍节,一个机器周期实际又包含了______12___个震荡周期。 15.PCON寄存器中与串行通信有关的只有D7位(SMOD),该位为 波特率信增位。当SMOD=___1______时,串行口波特率增加1倍,当SMOD=_____0____时,串行口波特率为设定值。 16.外围的扩展芯片的选择方法有两种方式,它们分别是___线选法 ______和_____译码法____。 17.定时器的计数方式是对来自T0,T1引脚的脉冲计数,输入的 外部脉冲在___负跳变______时有效,计数器加1,定时功能也是通过计数器计数来实现的,定时功能下的计数脉冲来自单片机内部的____时针_____电路。 18.MCS-51单片机片内共有____128_____字节单元的RAM。 19.若MCS-51单片机的程序状态字PSW中的RSI,RS0=11,那么, 工作寄存器R0~R7的直接地址为__18H-1FH_______。 20.I/O编址技术有____独立编址_____和____统一编址_____两种方式。 21.I/O数据传送的控制方式有___中断驱动方式______,程序查询方 式和____通道控制方式_____。 第一届蓝桥杯预赛试题 c 本科 第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i q__1__ = p[i+1]; q[len-1] = p[0]; —–(2)—-; prin tf(“%s\n”, q); 第三题, int f(int m, int n) { int a = 1; int m1 = m; //—–(3)—- a *= m1–; int b = 1; while(n>1) b *= n–; return a / b; } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237 请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i<4; i++) { N[3-i] = n % 10; —-(4)—- } for(i=0; i<3; i++) for(int j=0; j<3-i; j++) if(N[j]>N[j+1]) { int t = N[j+1]; N[j+1] = N[j]; N[j] = t; } int n_min=0; for(i=0; i<4; i++) n_min = n_min * 10 + N[i] ; int n_max = 0; for(i=3; i>=0; i–) n_max = n_max * 10 + N[i]; return n_max-n_min; } 第五题,假设有m+n个人,其中, m个人手持面额为5角的硬币, n个人手持面额为1元的硬币, 2015蓝桥杯A组试题 方程整数解 方程: a^2 + b^2 + c^2 = 1000 (或参见【图1.jpg】) 这个方程有整数解吗?有:a,b,c=6,8,30 就是一组解。 你能算出另一组合适的解吗? 请填写该解中最小的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 #include"stdio.h" #include"windows.h" int main() { int a, b, c; for (a = 1; a < 31;a++) for (b= 1; b < 31; b++) for (c = 1; c < 31; c++) { if (a*a + b*b + c*c == 1000) printf("%d %d %d\n", a, b, c); } printf("%d %d %d",a,b,c); system("pause"); return 0; } 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 21+31(2014年)+365(2015年)+366(2016年)=783;1000-783=217(2017年的第217天爆炸);31+28+31+30+31+30+31=212(2017年前七个月的天数);217-212=5(2017年第8个月的第五天爆炸) 大牛有用excel直接拖,用vbs算,路漫漫其修远兮...... 奇妙的数字 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容。 69,一个个试吧。 格子中输出 StringInGrid函数会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。 如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上一点。 下面的程序实现这个逻辑,请填写划线部分缺少的代码。 #include 一、单选题(每题20分) 1、(难度系数1)在舞台添加小猫角色,它的所有设置均为默认设置。舞台布局和程序运行舞台布局程序运行结果 运行以下哪段程序后,可以得到以上结果。() A B C D以上程序都不对 2、(难度系数2)小猫看到远处好久不见的朋友,于是跳起来说“你好!”想引起朋友的注意,执行以下程序后,小猫说“你好!”一共几秒?() A 0 B 2 C4 D 8 3、(难度系数3)当角色执行完这段程序后,舞台可能出现的图形是?() A、正三角形 B、正四边形 C、正六边形 D、正八边形 4、(难度系数4)执行完这段程序后,变量b的值可能是?() A、11 B、65 C、130 D、6065 5、(难度系数5)小红想做一个月亮围绕地球旋转的动画,如图,舞台有两个角色:“地球”“月球”,并写如下程序,小红希望运行程序后,月球以地球为中心做圆周运动。() A、B、 B、D、 1、难度系数2,满分50分 准备工作:导入背景库中的“bedroom2”,并导入角色库中的“Abby”“Candy”角色。 编程实现: Abby打扫完房间,房间停电了,Abby点上了一根蜡烛。想象停电后,点上蜡烛的效果。 图1.“关灯以前” 图2.“关灯后” 1、程序开始运行时,显示如图1.“关灯以前” 2、2秒以后,背景变暗,屏幕左边的墙上出现比小猫自身还要大的影子,如图2.“关灯后”。 3、之后一直保持图2效果 4、蜡烛、Abby、影子之间和大小应大致正确。 将程序保存在桌面,命名为“1.sb2” 评判标准: 10分:程序运行后,按图1的效果显示并保持至少2秒钟; 30分:在10分的基础上,能按图2的要求背景变暗,出现Abby阴影; 50分:在30分的基础上,背景中的圣诞树仍可见,蜡烛、Abby、影子之间的位置关系 基本正确,Abby和影子的大小关系符号逻辑。 2、难度系数3,满分50分 编程实现:今天天气多云,小熊在海边散步,他的头顶飘来一朵云,一阵风吹来,云飘走了,越飘越远,最后消失在空中。 具体要求: 1、舞台背景选择图示背景,增加云朵、小熊角色。 2、程序开始运行时,“小熊”“云朵”角色出现在图1所示的位置。 3、“云朵”角色能实现“从小熊头顶飘离,并向右上角平滑地漂移,越飘越高,越飘越小,直到最后消失”的动画效果。 将程序保存在桌面,命名为“2.sb2” 图1 图2 图3 图4 1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些 人参加了竞赛: (1)A参加时,B也参加; (2)B和C只有一个人参加; (3)C和D或者都参加,或者都不参加; (4)D和E中至少有一个人参加; (5)如果E参加,那么A和D也都参加。 00110 c、d #include<> int main() { int a,b,c,d,e; /*0表示不参加, 1表示参加.*/ for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0;c<2;c++) for(d=0;d<2;d++) for(e=0;e<2;e++) { if(a&&!b) continue; if(b&&c||!b&&!c) continue; if(c&&!d||!c&&d) continue; if(!d&&!e) continue; if(e&&(!a||!d)) continue; printf("%d%d%d%d%d",a,b,c,d,e); } return 0; } 2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: 1)A和B两人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派两人去; 4)B和C都去或都不去; 5)C和D两人中去一个; 6)若D不去,则E也不去。 试编写一个程序,输出问应当让哪几个人去? #include<> int main() { int a,b,c,d,e,f; for(a=1;a>=0;a--) for(b=1;b>=0;b--)/*1:去 0:不去*/ for(c=1;c>=0;c--) 1. 结果填空(满分4分) 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费 呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21 请严格按照格式,通过浏览器提交答案。 注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。 考场快速解题: 先看1778是闰年么?答案是不是,所以8113 - 365= 7748,又1779也不是,所以再减365得7383,然后1780是的,所以减去366得7017,又 1781,1782,1783,肯定都不是所以连减3个365得5922,然后又是闰年,-366,再-365 - 365-365 -366 - 365 -365 -365 -366 -365 -365 -365 ~ -366 -365-365 -365 1799 得 78,即这一天是1799年4月30日之后的78天,5月31天,-31,6月30天,-30,剩17天,此时即加上两个月,为1799年6月30日,然后往后数17天,即为1799年7月16日。 答案即为:1799-07-16 2. 结果填空(满分5分) 1、亲密数:假设有a、b两个数,若a的所有因子之和等于b,b的所有因子之和等于a,并且a不等于b,则称a和b是一对亲密数。如284和220就是一对亲密数。 #include int main() { long days = 5; /*1999年的最后一天为周5,把下一年加上5天对7取余为0的,则是周日*/ int i = 2000; for(;;) /*无循环终止条件,可以利用break语句终止循环*/ { if(i%4==0&&i%100!=0||i%400==0) { days = days%7+366; } else { days = days%7+365; } if(days%7==0&&i%100==99) { printf("%d",i); break; } i++; } return 0; } 3、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。 2012(1) 假设有两种微生物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 种群灭绝的最后一根稻草!请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!(循环) 2012(2) 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA。他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里!(循环、递归) 2012(3) 有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”。请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0。答案写在“解答.txt”中,不要写在这里!(循环、递归) #include 算法训练 编号:ALGO-1 题目:区间k大数查询列 关键字:排序查找 类型:普通试题 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行,每行一个数,表示询问的答案。 样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例输出 4 2 数据规模与约定 对于30%的数据,n,m<=100; 对于100%的数据,n,m<=1000; 保证k<=(r-l+1),序列中的数<=1000000。 本题的Java参考代码如下: import java.io.BufferedInputStream; import java.io.IOException; import java.util.Arrays; public class Main { private static BufferedInputStream in = new BufferedInputStream(System.in); public static void main(String[] args) throws IOException { int[] nums = new int[readInt()]; for(int i=0; i 1、奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。 请提交该数字(一个整数),不要写任何多余的内容或说明性文字。 2、星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置, 定时为1000天,请你计算它爆炸的准确日 期。 请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 if(year%4==0||(year%100==0&&year%400!= 0)) 3、三羊献瑞 观察下面的加法算式: 祥瑞生辉 + 三羊献瑞 ------------------- 三羊生瑞气 (如果有对齐问题,可以参看【图1.jpg】) 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 4、格子中输出 StringInGrid函数会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。 如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上 2016蓝桥杯c-c++B组省赛试题及解析第一题 煤球数目 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:171700 #include 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 答案:26 #include 上表由裁判填写,请参赛选手及阅卷裁判签名确认上述成绩准确无误,选手_________、裁判_________ 注意事项: 1.赛场内应保持安静,参赛选手间严禁互相交谈,违者将被取消比赛资格; 2.比赛过程中,笔记本计算机不得开启WLAN或蓝牙等各种无线通讯功能,违者将被取消比赛资格; 3.比赛过程中,应将准考证及身份证件放置桌子左上角,以备监考人员随时核对、检查; 4.参赛选手的手机在检录后必须保持关闭状态直至比赛结束,违者将被取消比赛资格; 5.比赛过程中,笔记本电脑须调为静音; 6.请在做题之前认真阅读题目,编程题目设置有步骤分,即只完成部分功能也可以得到相应的分数; 7.比赛答卷时间为90分钟; 8.比赛结束后,请自行整理所有自带设备及配件,并妥善带出赛场,尤其不要遗漏电源、连线或其他零部 件; 9.比赛结束时裁判现场判卷结束后,本赛卷一律交给判卷裁判,比赛选手不得自行带走,否则取消比赛成 绩。 一、单选题(每题20分) 第一题(难度系数1) 看,前方有一个苹果!想一想,下面哪段程序能帮助小猫拿到它呢? A B C D 第二题(难度系数2) 以下哪个选项不是说积木的结果? A: 7 B: 18 C: 3 D: 21 小法师被挡在墙外面,他要施展法术穿墙而过。除了“隐藏”积木块之外,还有哪个积木块可以帮他穿墙而过?A: B: C: D: 第四题(难度系数4) 角色小猫在运行如下程序5秒后,舞台上能看到几只小猫? A: 2 B: 3 C: 4 D: 5 运行上面的程序,角色说的结果为? A: 1 B: 2 C: 3 D: 4 二、判断题(每题20分,在括号里画“×”或“√”)第一题(难度系数1) 执行完这段程序后,可以在舞台上画出一条蓝色的直线。() Fibonacci数列的递推公式为:F n=F n-1+F n-2,其中F1=F2=1。 当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示F n除以10007的余数。 说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。 样例输入 10 样例输出 55 样例输入 22 样例输出 7704 数据规模与约定 1 <= n <= 1,000,000 1.#include 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。 说明:在本题中,输入是一个整数,但是输出是一个实数。 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。 实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。 样例输入 4 样例输出 50.2654825 数据规模与约定 1 <= r <= 10000。 提示 本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。 1.#include (1) 煤球数目 有一堆煤球,堆成三角棱锥形。具体:第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形),.... 如果一共有100层,共有多少个煤球?题解:纯粹的数学题而已 int a[101] ={0}; for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i; int ans = 0; for(int j = 1 ; j < 101 ; j ++) ans += a[j]; printf("%d\n",ans); (2) 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 题解:暴力枚举。 第一重循环枚举刚开始过生日时候的岁数。 第二重循环是枚举现在的岁数 第三重循环就是将刚开始过生日的岁数和现在的岁数加起来。 int start,end; for(start = 1 ; start < 236 ; start ++) { for( end = start ; end < 236 ; end ++ ) { int sum = 0; for(int i = start; i <= end; i ++) sum += i; if( sum == 236) printf("start : %d end : %d\n",start,end); } } B DEF A + — + —— = 10 C GHI (如果显示有问题,可以参见【图1.jpg】) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5+3/1+972/486 是另一种解法。 这个算式一共有多少种解法?//29 题解:DFS+回溯 由于计算机中5/2会等于2,而且如果打算采用精度方面的处理的话,会很麻烦,而且很容易错。 所以,把这些式子全部变成乘法形式就好了。 A*C*GHI+B*GHI+DEF*C=10*C*GHI蓝桥杯哦2010第一届大赛试题
蓝桥杯Java试题汇总-共48页
蓝桥杯练习系统题目汇总
蓝桥杯(客观题)练习题
蓝桥杯第一届初赛题目
2015年蓝桥杯A组试题及答案
(完整版)蓝桥杯大赛青少年创意编程Scratch初级组模拟题
蓝桥杯试题C语言答案
第四届蓝桥杯真题及答案
蓝桥杯试题标准答案(练习)
蓝桥杯所有真题
蓝桥杯算法训练习题与官方答案
蓝桥杯2015第六届C语言真题汇总
2016蓝桥杯c-c++省赛试题及答案解析
第十届蓝桥杯青少赛Scratch组试题
蓝桥杯模拟题加真题
历年蓝桥杯省赛B组真题试题