2011-2014蓝桥杯预赛递归算法题目及部分答案
2014预赛第三题
标题:李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
#include
using namespace std;
int sum = 0;
char str[100];
int Fun(int now, int i, int a, int b)
{
if(now < 0 || i > 16 || (now == 0 && i < 16))
return 0;
if(now == 0)
{
if(i == 16 && a == 5 && b == 10)
{
sum++;
for(int j = 0; j < 15; j++)
putchar(str[j]);
putchar(10);
}
}
str[i - 1] = 'a';
Fun(now * 2, i + 1, a + 1, b);
str[i - 1] = 'b';
Fun(now - 1, i + 1, a, b + 1);
}
int main()
{
str[15] = '\0';
Fun(2, 1, 0, 0);
printf("sum = %d\n", sum);
return 0;
}
2013预赛3: 第39级台阶(满分8分)
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
解答:
/有左右脚的限制,即第一步必须左脚,然后左右交替,最后一步必须是右脚。即必须走偶数步。
#include
//有左右脚的限制。
const int N=39;
int f(int m,int n)
{
if(m==0||n==0)
return 1;
return(f(m-1,n)+f(m,n-1));//递归的关键在此,大规模逐渐转化为小规模。
}
int main()
{
int x=N/2,y; //x表示走两步的次数,y表示走一步的次数。
int i,sum=0;
for(i=x;x>=0;x-=2) //为了保持偶数步,必须x每次递减2,而不是1;(x要x>=0,不能x>0),x=0是针对偶数台阶。
{
y=N-2*x;
sum+=f(x,y); //求组合数;
}
cout<<"共有"< return 0; } //51167078种走法。 2012预赛4: 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗? 如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011就是可能的情况。 你的任务是算出所有可能情况。每个答案占一行。 2011预赛9. 程序设计(满分16分) 公司发了某商店的购物券1000元,限定只能购买店中的m种商品。每种商品的价格分别为m1,m2,…,要求程序列出所有的正好能消费完该购物券的不同购物方法。 程序输入: 第一行是一个整数m,代表可购买的商品的种类数。 接下来是m个整数,每个1行,分别代表这m种商品的单价。 程序输出: 第一行是一个整数,表示共有多少种方案 第二行开始,每种方案占1行,表示对每种商品购买的数量,中间用空格分隔。 例如: 输入: 2 200 300 则应输出: 2 2 2 5 0 输入: 500 800 则应输出: 1 2 0 //预赛NO.9题 #include int sln;//方案的个数 int gm;//商品的种类 int price[1000];//各种商品价钱 int count[1000];//各种商品的个数 int method[1000][1000];//每种解决方案中各商品的个数int cost;//当前花费 void output()//输出解决方案 { int i,j; printf("%d\n",sln); for (i=0; i { for (j=0;j printf("%3d",method[i][j]); printf("\n"); } } void fun(int m) int i; if (cost == 1000) { for (i=0; i method[sln][i] = count[i]; sln++; return; } if (cost>1000 || m<0) return; //choose m ++count[m]; cost += price[m]; fun(m); //not choose m --count[m]; cost -= price[m]; fun(m-1); } void main() { int m;//商品的种类 int k; scanf("%d",&m); gm=m; for (k=0;k output(); } 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); } } } 第十题 标题:小朋友排队 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。 请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。 如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。 【数据格式】 输入的第一行包含一个整数n,表示小朋友的个数。 第二行包含n 个整数H1 H2 …Hn,分别表示每个小朋友的身高。 输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。 例如,输入: 3 3 2 1 程序应该输出: 9 【样例说明】 首先交换身高为3和2的小朋友,再交换身高为3和1的小朋友,再交换身高为2和1的小朋友,每个小朋友的不高兴程度都是3,总和为9。 【数据规模与约定】 对于10%的数据,1<=n<=10; 对于30%的数据,1<=n<=1000; 对于50%的数据,1<=n<=10000; 对于100%的数据,1<=n<=100000,0<=Hi<=1000000。 资源约定: 峰值内存消耗< 256M CPU消耗< 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中#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; 2014年预赛Java高职高专组 考生须知: ●考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压。 ●考试时间为4小时。时间截止后,选手无法继续提交答案。 ●在考试强制结束前,选手可以主动结束考试(需要身份验证),结束考试后将无法继续提交或浏览答案。 ●选手可浏览自己已经提交的答案。被浏览的答案允许拷贝。 ●对同一题目,选手可多次提交答案,以最后一次提交的答案为准。 ●参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等与身份有关的信息或其它与竞赛题目无关的内容,否则成绩无效。 ●参赛选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它方式提交的答案无效。 ●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”。 结果填空题:要求参赛选手根据题目描述直接填写结果。求解方式不限。不要求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容,比如:注释说明。 代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不超过一条语句(即中间不能出现分号)。 把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)直接通过网页提交即可,不要书写多余的内容,比如:注释或说明文字。 程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果,才有机会得分。 注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。 所有源码必须在同一文件中。调试通过后,拷贝提交。 注意:不要使用package语句。源程序中只能出现JDK1.6中允许的语法或调用。不能使用1.7或更高版本的特性。 注意:选手代码的主类名必须为:Main,否则会被判为无效代码。 1.结果填空(满分2分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请仔细阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 只提交题目要求的内容,不要填写任何多余的文字!! 2.结果填空(满分4分) 问题的描述在考生文件夹下对应题号的“题目.txt”中。相关的参考文件在同一目录中。请先阅读题目,不限解决问题的方式,只要求提交结果。 必须通过浏览器提交答案。 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 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 12.2.标题:激光样式 x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。 安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开! 国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果? 显然,如果只有3台机器,一共可以成5种样式,即: 全都关上(sorry, 此时无声胜有声,这也算一种) 开一台,共3种 开两台,只1种 30台就不好算了,国王只好请你帮忙了。 要求提交一个整数,表示30台激光器能形成的样式种数。 注意,只提交一个整数,不要填写任何多余的内容。 思路很简单,暴力搜索,30个灯光从左到右,从左边第一个开始,第一个可以开关,第二个要根据左边的灯光是否开启来取值,以此类推。。。答案2178309 1.#include 标题:武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走? 这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。 标题:等额本金 小明从银行贷款3万元。约定分24个月,以等额本金方式还款。 这种还款方式就是把贷款额度等分到24个月。每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。 假设月利率是:0.005,即:千分之五。那么, 第一个月,小明要还本金1250, 还要还利息:30000 * 0.005,总计1400.00 第二个月,本金仍然要还1250, 但利息为:(30000-1250) * 0.005 总计1393.75 请问:小明在第15个月,应该还款多少(本金和利息的总和)? 请把答案金额四舍五入后,保留两位小数。注意:32.5,一定要写为:32.50 通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。不要写多余内容(例如:多写了“元”或添加说明文字) 标题:猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。 答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。 标题:大衍数列 中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。 它的前几项是:0、2、4、8、12、18、24、32、40、50 ... 其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。 以下的代码打印出了大衍数列的前100 项。 int main() { int i; for(i=1; i<100; i++){ if(__________________) //填空 printf("%d ", i*i/2); else printf("%d ", (i*i-1)/2); } 蓝桥杯练习系统题目汇总: 入门训练 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 数据规模与约定 第一届蓝桥杯预赛试题 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元的硬币, 2014第五届蓝桥杯JAVA本科B组试题及答案 1. 武功秘籍小明到X山洞探险 2000 10页和第1111页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92 撕 80,81 82,8384,8586,87888990,9192,93 2. 切面条2根面条。 如果先对折13根面条。 如果连续对折25根面条。 10 1025 import java.util.Scanner; public class Main { public static void main(String []args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num = (int)Math.pow(2, n) + 1; System.out.println(num); //结果:2015 } } 3. 猜字母把abcd...s共19个字母组成的序列重复拼接1062014的串。 接下来删除第1a35个等所有奇数位置的 字母。 写 出该字母。 q import java.util.Scanner; /** * 该程序类似与约瑟夫环的问题 */ public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = "abcdefghijklmnopqrs"; String str1 = ""; for(int i = 0;i < 106;i++){ str1 = str1 + str; 一、单选题(每题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--) 2014第五届蓝桥杯JAVA本科B组试题及答案? 1. 武功秘籍 答案:(80,81);(82,83);(84,85);(86,87);(88,89);(90,91);(92,93)? 2. 切面条 答案:1025 import java.util.Scanner; public class Main { public static void main(String []args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num = (int)Math.pow(2, n) + 1; System.out.println(num); //结果:2015 } } ? 3. 猜字母 答案:q import java.util.Scanner; /** * 该程序类似与约瑟夫环的问题 */ public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = "abcdefghijklmnopqrs"; String str1 = ""; for(int i = 0;i < 106;i++){ str1 = str1 + str; } System.out.println(str1.length()); boolean[] arr = new boolean[str1.length()]; for(int i=0; i 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 第一题 标题:武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走? 这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。 第二题 标题:等额本金 小明从银行贷款3万元。约定分24个月,以等额本金方式还款。 这种还款方式就是把贷款额度等分到24个月。每个月除了要还固定的本金外,还要还贷款余额在一个月中产生的利息。 假设月利率是:0.005,即:千分之五。那么, 第一个月,小明要还本金1250, 还要还利息:30000 * 0.005,总计1400.00 第二个月,本金仍然要还1250, 但利息为:(30000-1250) * 0.005 总计1393.75 请问:小明在第15个月,应该还款多少(本金和利息的总和)? 请把答案金额四舍五入后,保留两位小数。注意:32.5,一定要写为:32.50 通过浏览器提交答案,这是一个含有小数点和两位小数的浮点数字。不要写多余内容(例如:多写了“元”或添加说明文字) 第三题 标题:猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。 得到的新串再进行删除奇数位置字母的动作。如此下去,最后只剩下一个字母,请写出该字母。 答案是一个小写字母,请通过浏览器提交答案。不要填写任何多余的内容。 第四题 标题:大衍数列 中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。它的前几项是:0、2、4、8、12、18、24、32、40、50 ... 其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。 以下的代码打印出了大衍数列的前100 项。 int main() { inti; for(i=1; i<100; i++){ if(__________________) //填空 printf("%d ", i*i/2); else printf("%d ", (i*i-1)/2); } printf("\n"); } 请填写划线部分缺失的代码。通过浏览器提交答案。 注意:不要填写题面已有的内容,也不要填写任何说明、解释文字。 第五题 标题:打印图形 小明在X星球的城堡中发现了如下图形和文字: rank=3 算法训练 编号: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 2014第五届蓝桥杯JAVA本科B组试题及答案 1. 武功秘籍小明到X山洞探险捡到一本有破损的武功秘籍2000多页当然是伪造的。他意识到书的第10页和第11页在同一张纸上但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功又不想带着整本书。请问他至少要撕下多少张纸带走 这是个整数请通过浏览器提交该数字不要填写任何多余的内容。 答案80,8182,8384,8586,87888990,91 92,93 2. 切面条一根高筋拉面中间切一刀可以得到2根面条。 如果先对折1次中间切一刀可以得到3根面条。 如果连续对折2次中间切一刀可以得到5根面条。 那么连续对折10次中间切一刀会得到多少面条呢 答案是个整数请通过浏览器提交答案。不要填写任何多余的内容。 答案1025 import java.util.Scanner; public class Main { public static void main(String []args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num = (int)Math.pow(2, n) + 1; System.out.println(num); //结果:2015 } } 3. 猜字母把abcd...s共19个字母组成的序列重复拼接106次得到长度为2014的串。接下来删除第1个字母即开头的字母a以及第3个第5个等所有奇数位置的字母。得到的新串再进行删除奇数位置字母的动作。如此下去最后只剩下一字母请写出该字母。 答案是一个小写字母请通过浏览器提交答案。不要填写任何多余的内容。答案q import java.util.Scanner; /** * 该程序类似与约瑟夫环的问题 */ public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = "abcdefghijklmnopqrs"; String str1 = ""; for(int i = 0;i < 106;i++){ str1 = str1 + str; } System.out.println(str1.length()); boolean[] arr = new boolean[str1.length()]; for(int i=0; i蓝桥杯c c 省赛试题及答案解析
2014年第五届蓝桥杯预赛题目及标准答案
蓝桥杯哦2010第一届大赛试题
2014年第五届蓝桥杯预赛题目JAVA软件开发高职高专组
蓝桥杯Java试题汇总-共48页
2018蓝桥杯试题
第五届蓝桥杯计算比赛省赛真题
蓝桥杯练习系统题目汇总
蓝桥杯第一届初赛题目
2014第五届蓝桥杯JAVA本科B组试题及答案
(完整版)蓝桥杯大赛青少年创意编程Scratch初级组模拟题
蓝桥杯试题C语言答案
2014第五届蓝桥杯JAVA本科B组试题答案
第四届蓝桥杯真题及答案
蓝桥杯试题标准答案(练习)
蓝桥杯所有真题
第五届蓝桥杯C语言高职试题(填空)带答案
蓝桥杯算法训练习题与官方答案
2014第五届蓝桥杯JAVA本科B组试题及答案解析