蓝桥杯历年试题

合集下载

蓝桥杯历年试题

蓝桥杯历年试题

1.在excel中计算日期天数的输入方式=“2003-1-1”—“2004- 1-1”加回车键就可。

2.求最大公约数时可以用递归int gcd(int p, int q){if (q == 0)return p;int r = p % q ;gcd(q, r );}3.上楼梯走一步,或者走两步的所有可能递归关系是f(n) = f(n-1) + f(n - 2);其中:偶数步= 奇数步+ 1;例如n = 3; 时奇数步为1中(1,1,1)偶数步为(1,2)(2,1);4.走方格式走的步数递归式为:f(n,m) = f(n-1,m) + f(n + m-1);4问题描述二叉树可以用于排序。

其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。

当遇到空子树时,则把该节点放入那个位置。

比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白。

...|-1210-|...|-8-|.......|...|-7.......|-5-|...........|-4本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。

输入格式输入数据为一行空格分开的N个整数。

N<100,每个数字不超过10000。

输入数据中没有重复的数字。

输出格式输出该排序二叉树的横向表示。

为了便于评卷程序比对空格的数目,请把空格用句点代替:样例输入110 5 20样例输出1...|-2010-|...|-5样例输入25 10 20 8 4 7样例输出2.......|-20..|-10-|..|....|-8-|..|........|-75-|..|-4问题描述X星球十分特殊,它的自转速度与公转速度相同,所以阳光总是以固定的角度照射。

最近,X星球为发展星际旅游业,把空间位置出租给Y国游客来晒太阳。

每个租位是漂浮在空中的圆盘形彩云(圆盘与地面平行)。

历年蓝桥杯省赛B组真题试题1

历年蓝桥杯省赛B组真题试题1

(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); (3)B DEFA + — + —— = 10C GHI(如果显示有问题,可以参见【图1.jpg】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?//29题解:DFS+回溯由于计算机中5/2会等于2,而且如果打算采用精度方面的处理的话,会很麻烦,而且很容易错。

蓝桥杯小学试题及答案

蓝桥杯小学试题及答案

蓝桥杯小学试题及答案一、选择题(每题2分,共10分)1. 下列哪个选项是蓝桥杯的官方标志?A. 蓝色桥梁B. 蓝桥杯C. 蓝桥牌D. 蓝桥奖2. 蓝桥杯小学组的参赛年龄限制是多少岁?A. 6-12岁B. 8-14岁C. 10-16岁D. 12-18岁3. 蓝桥杯小学组的比赛项目包括哪些?A. 编程B. 数学C. 英语D. 所有以上选项4. 蓝桥杯的初赛通常在什么时间举行?A. 春季B. 夏季C. 秋季D. 冬季5. 蓝桥杯的决赛通常在哪个城市举行?A. 北京B. 上海C. 广州D. 深圳二、填空题(每题2分,共10分)1. 蓝桥杯小学组的编程比赛主要使用______语言。

2. 蓝桥杯小学组的数学比赛主要考察学生的______能力和______能力。

3. 蓝桥杯小学组的英语比赛包括______、______和______三个部分。

4. 蓝桥杯的初赛成绩优异者将获得晋级______的资格。

5. 蓝桥杯的决赛成绩优异者将有机会获得______的荣誉。

三、简答题(每题5分,共20分)1. 请简述蓝桥杯小学组编程比赛的目的和意义。

2. 蓝桥杯小学组数学比赛的题型有哪些?3. 蓝桥杯小学组英语比赛的评分标准是什么?4. 参加蓝桥杯小学组比赛对学生有哪些好处?四、编程题(每题10分,共20分)1. 编写一个程序,计算并输出1到100之间所有偶数的和。

2. 编写一个程序,判断一个给定的年份是否为闰年,并输出结果。

五、数学应用题(每题10分,共20分)1. 小明有10个苹果,他分给小华3个,然后又分给小李4个,最后自己还剩下多少个苹果?2. 一个长方形的长是10厘米,宽是5厘米,求这个长方形的面积和周长。

六、英语阅读理解题(每题5分,共20分)阅读以下短文,并回答后面的问题。

(短文内容略)1. 短文中提到的主要人物是谁?2. 主要人物做了什么?3. 短文中描述了哪些地点?4. 短文中的主要事件是什么?七、英语写作题(10分)请根据以下提示,写一篇不少于50字的英语短文。

蓝桥杯例题

蓝桥杯例题

1.蓝桥杯全国软件和信息技术专业人才大赛是由哪个部门主办的?A.教育部(答案)B.科技部C.工业和信息化部D.国家发展和改革委员会2.蓝桥杯大赛主要考察参赛者的哪些能力?A.编程和算法设计能力(答案)B.市场营销能力C.团队协作能力D.演讲能力3.蓝桥杯大赛通常分为哪些组别进行比赛?A.大学A组、大学B组和大学C组(答案)B.初级组、中级组和高级组C.青少年组、成人组和大师组D.企业组、学校组和个人组4.在蓝桥杯大赛中,以下哪种编程语言是常用的?A.C/C++(答案)B.Python(虽然Python也常被使用,但在此处作为非唯一或首选答案)C.Java(Java也是常用语言,但同样非首选答案)D.JavaScript5.蓝桥杯大赛的获奖者通常可以获得哪些奖励?A.奖金、证书和学校加分(答案)B.实物奖品、旅游机会和荣誉称号C.股票、期权和就业机会D.学术期刊发表机会6.蓝桥杯大赛的参赛资格通常要求参赛者是什么身份?A.在校大学生(答案)B.企业员工C.专业程序员D.无特定身份要求7.在蓝桥杯大赛中,以下哪个环节不是必须的?A.提交代码并运行通过测试((答案,此选项描述了一个通常情况,但并非所有题目都需提交并运行代码,而是根据题目要求可能只需提交答案或解题思路)B.理解题目要求C.设计算法或解决方案D.在规定时间内完成题目8.蓝桥杯大赛的题目难度通常是如何分布的?A.从易到难,逐步增加(答案)B.所有题目难度相同C.难度随机分布D.先难后易9.参加蓝桥杯大赛对参赛者未来的职业发展有哪些帮助?A.提升编程技能和算法设计能力,增加就业竞争力(答案)B.直接获得高薪工作机会C.获得学术研究成果D.无需进一步学习即可成为专家10.蓝桥杯大赛的举办周期是多久?A.每年一届(答案)B.每两年一届C.每季度一届D.每月一届。

蓝桥杯部分题目(含答案)

蓝桥杯部分题目(含答案)

1、未名湖边的烦恼关键词:递归,蓝桥杯,算法问题描述每年冬天,北大未名湖上都是滑冰的好地方。

北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。

每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。

现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。

(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式两个整数,表示m和n输出格式一个整数,表示队伍的排法的方案数。

样例输入3 2样例输出5数据规模和约定m,n∈[0,18]#include "iostream"#include "cstdio"#include "cmath"#include "algorithm"#include "map"using namespace std;int f(int m,int n){if(m<n) return 0;if(n==0) return 1;return f(m,n-1)+f(m-1,n);}int main(){int m,n;scanf("%d%d",&m,&n);int ans=f(m,n);printf("%d\n",ans);return 0;}2.标题:蚂蚁感冒关键词:结构体排序,蓝桥杯【题目描述】长100厘米的细长直杆子上有n只蚂蚁。

它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。

并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

【数据格式】第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。

答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。

历届蓝桥杯试题及答案

历届蓝桥杯试题及答案

历届蓝桥杯试题及答案蓝桥杯是中国最有影响力的计算机竞赛之一,每年都会吸引众多计算机科学爱好者的参与。

本文将回顾历届蓝桥杯的试题,并给出相应的答案。

通过了解历届试题,可以帮助读者更好地准备参加蓝桥杯竞赛。

(此处省略介绍部分)第一届蓝桥杯试题及答案:试题一:(试题内容)(解答步骤)试题二:(试题内容)(解答步骤)试题三:(试题内容)(解答步骤)......第二届蓝桥杯试题及答案:试题一:(试题内容)(解答步骤)试题二:(试题内容)(解答步骤)试题三:(试题内容)(解答步骤)......随着届数的增加,蓝桥杯的试题逐渐增加了难度和复杂程度。

参赛者需要有扎实的计算机基础知识和编程技能才能应对这些挑战。

以下是蓝桥杯历届试题的一些特点总结:1. 试题内容涵盖广泛:蓝桥杯试题从计算机基础知识到算法设计,从编程练习到系统设计,几乎涵盖了计算机科学的各个领域。

2. 试题形式多样:蓝桥杯试题不仅有传统的选择题和编程题,还有设计题、开放题等形式。

这样的设计旨在考察参赛者的创新能力和综合运用能力。

3. 解答步骤详细:对于编程题和算法设计题,蓝桥杯试题答案中往往会给出详细的解答步骤,包括思路分析、代码实现等。

这对于参赛者来说是很好的学习资料。

通过研究历届蓝桥杯试题和答案,我们可以总结出以下参加蓝桥杯竞赛的一些建议:1. 扎实的基础知识:参赛者应该有扎实的计算机基础知识,包括数据结构、算法、编程语言等方面。

只有基础知识扎实,才能更好地应对复杂的试题。

2. 练习编程技巧:编程技巧是参赛者必备的能力,需要不断进行练习和实践。

可以通过刷题、参加编程比赛等方式来提高编程技巧。

3. 团队合作能力:蓝桥杯竞赛有团队赛和个人赛两种形式,参赛者可以选择适合自己的方式。

无论是个人赛还是团队赛,团队合作能力都是必不可少的。

在团队中合理分工、有效沟通,可以提高比赛的效果。

4. 多方面准备:蓝桥杯试题范围广泛,参赛者应该在各个方面进行准备,包括理论知识、实践能力、应试技巧等。

蓝桥杯试题及答案

蓝桥杯试题及答案

蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。

答案:int2. 在JavaScript中,用于定义函数的关键字是________。

答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。

答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。

例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。

2. 请解释什么是栈,并给出一个栈的应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。

一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。

四、编程题1. 编写一个函数,实现对一个整数数组进行排序。

答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。

答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。

蓝桥杯c组试题及答案

蓝桥杯c组试题及答案

蓝桥杯c组试题及答案一、选择题(每题5分,共20分)1. 下列关于C语言的描述,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持函数式编程答案:B2. 在C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 下列关于指针的描述,正确的是:A. 指针可以存储变量的地址B. 指针可以存储变量的值C. 指针不能存储数组的地址D. 指针不能存储函数的地址答案:A4. 在C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:D二、填空题(每题5分,共20分)1. 在C语言中,表示逻辑与的运算符是______。

答案:&&2. 用于声明一个整型变量的关键字是______。

答案:int3. 在C语言中,数组的索引是从______开始的。

答案:04. C语言中,用于结束一个程序的语句是______。

答案:return三、编程题(每题30分,共60分)1. 编写一个C语言程序,实现计算并输出100以内所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 2; i <= 100; i += 2) {sum += i;}printf("Sum of even numbers from 1 to 100 is: %d\n", sum); return 0;}```2. 编写一个C语言程序,实现一个简单的计算器,可以计算两个整数的加、减、乘、除。

```c#include <stdio.h>int main() {int a, b;char op;float result;printf("Enter first number: ");scanf("%d", &a);printf("Enter operator (+, -, *, /): ");scanf(" %c", &op);printf("Enter second number: ");scanf("%d", &b);switch (op) {case '+':result = a + b;break;case '-':result = a - b;break;case '*':result = a * b;break;case '/':if (b != 0)result = (float)a / b;else {printf("Division by zero error!\n"); return 1;}break;default:printf("Invalid operator!\n");return 1;}printf("Result: %.2f\n", result);return 0;}```。

蓝桥杯c语言历年试题及答案

蓝桥杯c语言历年试题及答案

蓝桥杯c语言历年试题及答案蓝桥杯C语言历年试题及答案1. 题目:求两个整数的最大公约数(GCD)。

答案:可以使用辗转相除法(欧几里得算法)来求解两个整数的最大公约数。

2. 题目:编写一个函数,实现字符串的反转。

答案:可以使用双指针法,一个指针指向字符串的开头,另一个指向字符串的结尾,然后交换这两个指针所指向的字符,直到两个指针相遇。

3. 题目:计算一个整数数组中所有元素的和。

答案:遍历数组中的每个元素,并将它们累加到一个变量中。

4. 题目:判断一个整数是否是素数。

答案:如果一个数大于1,且除了1和它本身外,不能被其他自然数整除,则它是素数。

5. 题目:实现一个函数,计算一个整数的阶乘。

答案:可以使用递归或循环来实现。

递归方法中,n的阶乘等于n 乘以(n-1)的阶乘。

6. 题目:编写一个程序,实现字符串的去重。

答案:可以使用哈希表来存储已经出现过的字符,遍历字符串时,如果字符未出现过,则将其添加到结果字符串中。

7. 题目:实现一个函数,计算数组中每个元素出现的次数。

答案:可以使用哈希表来存储每个元素及其出现的次数。

8. 题目:编写一个程序,实现二分查找算法。

答案:二分查找算法的基本思想是将数组分为两部分,取中间元素与目标值比较,如果相等,则找到目标值;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。

9. 题目:实现一个函数,计算一个整数的各位数字之和。

答案:可以使用循环,每次取整数的最后一位数字,然后将其加到一个变量中,并将整数除以10。

10. 题目:编写一个程序,实现快速排序算法。

答案:快速排序算法是一种分治法策略,通过选择一个基准值,将数组分为两部分,一部分包含小于基准值的元素,另一部分包含大于基准值的元素,然后递归地对这两部分进行快速排序。

以上是蓝桥杯C语言历年试题及答案的示例。

蓝桥杯大学组试题及答案

蓝桥杯大学组试题及答案

蓝桥杯大学组试题及答案一、单项选择题(每题5分,共50分)1. 以下哪个选项是Python语言中定义列表的正确方式?A. list = {}B. list = []C. list = ()D. list = []答案:B2. 在HTML中,用于定义最重要的标题的标签是?A. <h1>B. <h2>C. <h3>D. <h4>答案:A3. 以下哪个选项是JavaScript中声明函数的正确方式?A. function myFunction() {}B. var myFunction = function() {}C. var myFunction = function() {}D. Both A and B答案:D4. 在CSS中,以下哪个属性用于设置元素的背景颜色?A. background-colorB. backgroundC. colorD. bgcolor答案:A5. 在SQL中,以下哪个命令用于创建一个新的数据库?A. CREATE TABLEB. CREATE DATABASEC. SELECTD. INSERT INTO答案:B6. 在Java中,以下哪个关键字用于定义一个类?A. classB. functionC. structD. interface答案:A7. 在C++中,以下哪个操作符用于定义引用?A. *B. &C. %D. #答案:B8. 在PHP中,以下哪个函数用于连接数据库?A. connect()B. db_connect()C. mysqli_connect()D. database_connect()答案:C9. 在Unix/Linux系统中,以下哪个命令用于查看当前工作目录?A. pwdB. lsC. cdD. mkdir答案:A10. 在正则表达式中,以下哪个符号用于匹配任何单个字符?A. .B. *C. ^D. $答案:A二、多项选择题(每题10分,共20分)1. 以下哪些选项是JavaScript中常用的数据类型?A. NumberB. StringC. BooleanD. ObjectE. Array答案:ABCDE2. 在Python中,以下哪些选项是合法的变量命名?A. _my_varB. my_varC. 2my_varD. my-varE. myVar答案:ABE三、简答题(每题15分,共30分)1. 请简述在HTML5中,如何使用Canvas元素绘制一个简单的矩形。

蓝桥杯历年c语言试题及答案

蓝桥杯历年c语言试题及答案

蓝桥杯历年c语言试题及答案蓝桥杯历年C语言试题及答案1. 题目一:数组反转要求:编写一个函数,实现对整数数组的反转。

输入:一个整数数组及其长度。

输出:反转后的数组。

答案:```cvoid reverseArray(int arr[], int n) {int temp;for (int i = 0; i < n / 2; i++) {temp = arr[i];arr[i] = arr[n - i - 1];arr[n - i - 1] = temp;}}```2. 题目二:寻找最大数要求:给定一个整数数组,找出其中的最大数。

输入:一个整数数组及其长度。

输出:数组中的最大数。

答案:```cint findMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```3. 题目三:计算阶乘要求:编写一个函数,计算给定非负整数的阶乘。

输入:一个非负整数。

输出:该整数的阶乘。

答案:```clong long factorial(int n) {if (n == 0) return 1;long long fact = 1;for (int i = 1; i <= n; i++) {fact *= i;}return fact;}```4. 题目四:字符串反转要求:编写一个函数,实现对字符串的反转。

输入:一个字符串。

输出:反转后的字符串。

答案:```cvoid reverseString(char str[]) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}```5. 题目五:判断素数要求:编写一个函数,判断给定的整数是否为素数。

蓝桥杯小学测试题及答案

蓝桥杯小学测试题及答案

蓝桥杯小学测试题及答案一、选择题(每题2分,共20分)1. 以下哪个选项是正确的?A. 蓝桥是红色的B. 蓝桥是蓝色的C. 蓝桥是绿色的D. 蓝桥是黄色的答案:B2. 蓝桥杯小学测试题的总分是多少?A. 50分B. 60分C. 70分D. 80分答案:B3. 以下哪个选项是蓝桥杯小学测试题的题型?A. 选择题B. 填空题C. 判断题D. 所有以上答案:D4. 蓝桥杯小学测试题的选择题部分共有多少题?A. 10题B. 15题C. 20题D. 25题答案:A5. 蓝桥杯小学测试题的填空题部分共有多少题?A. 5题B. 10题C. 15题D. 20题答案:A二、填空题(每题2分,共10分)1. 蓝桥杯小学测试题的选择题部分占总分的______%。

答案:33.332. 蓝桥杯小学测试题的填空题部分占总分的______%。

答案:16.673. 如果一个学生在选择题部分得了满分,那么他在填空题部分至少需要得______分才能达到总分的80%。

答案:64. 蓝桥杯小学测试题的总分是______分。

答案:605. 如果一个学生在选择题部分得了10分,在填空题部分得了5分,那么他的总分是______分。

答案:15三、判断题(每题1分,共10分)1. 蓝桥杯小学测试题的总分是100分。

()答案:×2. 选择题和填空题是蓝桥杯小学测试题的两种题型。

()答案:√3. 蓝桥杯小学测试题的选择题部分有20题。

()答案:×4. 蓝桥杯小学测试题的填空题部分有10题。

()答案:×5. 蓝桥杯小学测试题的总分是50分。

()答案:×四、简答题(每题5分,共20分)1. 请简述蓝桥杯小学测试题的目的。

答案:蓝桥杯小学测试题的目的是检验学生的基础知识掌握情况,并通过测试来激发学生的学习兴趣和提高学习效果。

2. 蓝桥杯小学测试题的评分标准是什么?答案:蓝桥杯小学测试题的评分标准是每题的分值乘以学生答对的题目数量,最后将所有题目的分数相加得出总分。

蓝桥杯试题(真题)训练

蓝桥杯试题(真题)训练

蓝桥杯试题(真题)训练1. 运算符难度:5颗星c语⾔的compare函数⽐较两字符串⼤⼩1//使⽤c语⾔的compare函数⽐较两字符串⼤⼩返回值为-1,0,12string s1 = "asd",s2 = "asd";3int t = pare(s2);//逐个⽐较字母,若t=-1,说明 s1<s2 ; 若t=1,说明 s1>s2 ; 若t=0,说明 s1=s2 ;4 cout<<t<<endl;思路:使⽤两个函数:toNumber(string s,int c)、toString(long long n,int c)对于toNumber(string s,int c)函数作⽤:将c进制的s2字符串转为10进制的数字对于toString(long long n,int c)函数作⽤:将10进制的n数字转为c进制的字符串对于该题,我们运算中的数字都转为10进制去运算,所以我们的数字平时都以10进制保存(输⼊s2之后,使⽤toNumber(s2,c)转为10进制)当我们需要输出答案时,再将运算结果⽤c进制输出(toString(res,c))代码:注明:易错点都已在源代码中标出。

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;//将c进制的s字符串转换为10进制的数字long long toNumber(string s,int c){ //第四处:返回数据应为long long型int len = s.length();long long n = 0;for(int i = 0;i<len;i++){if(s[i] >= 'A') n = (s[i]-'A'+10) + n*c;else n = (s[i]-'0') + n*c;}return n;}//将10进制的数字n转换为c进制的字符串sstring toString(long long n,int c){string s;if(n == 0) return"0"; //第⼀处:忘记考虑n=0的情况while(n){long long t = n%c; //第⼆处:t的数据范围错误写成intif(t>=10) s.push_back(t-10+'A');else s.push_back(t+'0');n/=c;}reverse(s.begin(),s.end());return s;}int main(){//n表⽰操作数,c表⽰当前进制单位,isclear标记前⾯的数是否被清除//p表⽰操作符序号int n,c=10,isclear = 1,p=0;cin>>n;//s1表⽰操作,s2表⽰数字string s1,s2;long long res,num;while(n--){cin>>s1;if(!pare("NUM")){cin>>s2;if(isclear){//说明前⾯的数已经被清除res = toNumber(s2,c);//说明s2为c进制的数,将s2转为10进制的数字isclear = 0; //第六处:记得将isclear的值设为0}else{ //说明前⾯有数num = toNumber(s2,c);if(p==1) res+=num;else if(p==2) res-=num;else if(p==3) res*=num;else if(p==4) res/=num;else if(p==5) res%=num;p=0; //第7处:记得将p的值设为0}}else if(!pare("ADD")){p=1;}else if(!pare("SUB")){p=2;}else if(!pare("MUL")){p=3;}else if(!pare("DIV")){p=4;}else if(!pare("MOD")){p=5;}else if(!pare("CHANGE")){cin>>c;}else if(!pare("EQUAL")){ //平时计算都以10进制,输出将res化为c进制cout<<toString(res,c)<<endl; //第三处:输出没加换⾏}else if(!pare("CLEAR")){//表⽰将前⾯的数清除isclear = 1; //第五处:总容易误写成将isclear=1写成c=1,导致样例输出结果为40 }}return0;}2. 求“连通块数⽬”题tarjan算法或者并查集需复习并查集解法:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;//并查集算法 find and union函数#define maxn 1000010int pre[maxn];int m,n,k,cnt;void Init(){for(int i = 1;i<=m*n;i++){pre[i]=i;}cnt = m*n; //cnt表⽰刚开始的根节点数⽬}int myFind(int a){if(a == pre[a]) return a;else return pre[a]=myFind(pre[a]);}void myunion(int a,int b){int aroot = myFind(a);int broot = myFind(b);if(aroot != broot){pre[broot] = aroot;//易错点:需注意,不要写成pre[b]=a;cnt--;}}int main(){cin>>m>>n;Init();cin>>k;while(k--){int a,b;cin>>a>>b;myunion(a,b);}cout<<cnt<<endl;}3. 回溯搜索每次可以进⾏两种操作:新建考场或者某⼀个之前的考场需复习1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4using namespace std;56#define maxn 1057int n,m,ans=99999;8int f[maxn][maxn]={0};9int a[maxn]={0};//a[i]存第i个⼈所在的考场1011bool Judge(int x,int room){ //判断第x个⼈是否能使⽤第room个考场12for(int i=1;i<=n;i++){13if((f[x][i]==1)&&(a[i]==room)){ //说明该考场存在与x有关系的⼈14return false;15 }16 }17return true;18}1920void solve(int x,int room_num){21if(room_num>=ans){ //剪枝注意:我这⾥如果少了=,评测机会判断超时...22return;23 }24if(x>n){ //说明安排考场任务结束25 ans=min(ans,room_num);26return;27 }28//判断是否可以使⽤之前的某个考场29for(int i=1;i<=room_num;i++){30if(Judge(x,i)==true){31 a[x]=i;32 solve(x+1,room_num);33 a[x]=0;34 }35 }36//前⾯那些考场⽆法使⽤,需新建考场37 a[x]=room_num+1;38 solve(x+1,room_num+1);39 a[x]=0;40}4142int main(){43int x,y;44 cin>>n>>m;45while(m--){46 cin>>x>>y;47 f[x][y]=f[y][x]=1;48 }4950 solve(1,0);51 cout<<ans<<endl;52 }4.⼩数第n位思维题:模拟除法需复习注意:我们需判断是否需要对代码进⾏优化,不优化是否会超数据范围,超时之类的...很明显,该题需进⾏优化,对数据逼近防⽌超时---------易错点:注意变量的数据类型,int与long long的区别#include <iostream>using namespace std;int main(){long long i,a,b,n;cin>>a>>b>>n;a=a%b;//若n过⼤,加⼀个while快速逼近⼩数点后第n位的位置while(n>10){a*=1e10;n-=10;a%=b;}for(i=1;i<=n+2;i++) //注意:i的数据类型{a*=10;if(i>=n){cout<<a/b;}a%=b;}return0;}⼆分查找⽅法:这个要记住背诵binary_search(a,a+N,t)==true//表明在数组a中存在t这个数字下标=lower_bound(a,a+N,t)-a;//得到>=t这个数的下标5.对局匹配需复习算法思想:动态规划求:最多可以存在多少名(任意两名⽤户积分差不等于K)我们对⽤户的积分进⾏整理(对k取余,余数相同的积分在同⼀分组):0,0+k,0+2k...1,1+k,1+2k...2,2+k,2+2k...只有在同⼀个分组的⽤户才可能积分差等于K所以我们先求出每⼀个分组的最多可存在⽤户⼈数最后总和分组得到答案对每⼀个分组进⾏状态转移⽅程:f[j]=max(f[j-1],f[j-2]+num[j]);f[j]:表⽰ [该分组] 到第i个元素的最⼤⽤户⼈数对于积分i我们选或者不选完全取决于它的⽤户个数,⽽如果选积分i,那么积分i-k与积分i+k是不可选的,⽽如果不选积分i,那么积分i-k与积分i+k是可选的,所以:num[i]=max(num[i-k],num[i]+num[i+k])1 #include<iostream>2 #include<algorithm>3using namespace std;4#define maxn 1000015int n,k,ans;6//hsh[i]表⽰积分为i的⽤户⼈数7//下⾯两个数组每在⼀个分组中就重新赋值; 同⼀分组的余数t相同:t,k+t,2*k+t,3*k+t...8//num[i]存该分组的第i个元素的⽤户⼈数9//f[i]存该分组到第i个元素的最⼤⽤户⼈数 , 最⼤⽤户⼈数的关系:a,a+k,a+2*k , max(num[a]+num[a+2*k],num[a+k])10int hsh[maxn]={0},num[maxn]={0},f[maxn]={0};11int main(){12 cin>>n>>k;13 ans=0;14int t,i,j;15for(i=0;i<n;i++){16 cin>>t;17 hsh[t]++;18 }19if(k==0){//重复积分只取⼀个20for(i=1;i<maxn;i++){21if(hsh[i]!=0){22 ans++;23 }24 }25 }26else{27for(i=0;i<k;i++){//k个分组28int m=1;29for(j=i;j<maxn;j+=k){ //j为该分组的积分值,范围在(i,maxn)30 num[m++]=hsh[j];//hsh[j]为积分值为j时的⽤户⼈数31 }32 f[1]=num[1];33for(j=2;j<=m;j++){ //注意:这⾥的j⼀定要从2开始,否则下⾯的j-2会下标越界34 f[j]=max(f[j-1],f[j-2]+num[j]);35 }36 ans+=f[m];37 }38 }39 cout<<ans<<endl;40return0;41 }2.递推写法#include<iostream>#include<algorithm>using namespace std;#define maxn 100001int has[maxn]={0},d[maxn]={0};int main(){int n,k;cin>>n>>k;for(int i=0;i<n;i++){int x;cin>>x;has[x]++;}int ans=0;if(k==0){for(int i = 1; i < maxn; i++)ans += (bool)has[i];}else{for(int i=0;i<k;i++){//k个分组int sum=0;d[i]=has[i],d[i+k]=has[i+k];for(int j=i+2*k;j<maxn;j+=k){d[j]=max(d[j-k],d[j-2*k]+has[j]);//递推关系式sum=max(d[j],sum);}ans+=sum;}}cout<<ans<<endl;return0;}View Code6.发现环并查集+dfs思路:并查集找到环上的某点之后,进⾏递归求该环上的所有点代码:#include <cstdio>#include<iostream>#include <algorithm>#include<vector>using namespace std;const int maxn = 100001;int n;int f[maxn],flag,vis[maxn]={0};vector<int> g[maxn],ans;int Find(int x){return f[x]==x?x:f[x]=Find(f[x]);}bool dfs(int x){if(vis[x]){if(x==flag){ //说明递归结束return true;}else{ //说明回溯到前⾯经过的某节点return false;}}vis[x]=1;for(int i=0;i<g[x].size();i++){if(dfs(g[x][i])){ans.push_back(g[x][i]);return true;}}return false;}int main(){cin>>n;int x,y;//并查集⼀定要记得初始化for(int i=0;i<n;i++) f[i]=i;for(int i=0;i<n;i++){cin>>x>>y;g[x].push_back(y);g[y].push_back(x);int rootx=Find(x), rooty=Find(y);//并查集找到环的某点if(rootx!=rooty){f[rootx]=rooty;}else{//两个祖宗节点相同,说明是环节点flag=x;dfs(x);//找到环上的点后进⾏递归}}sort(ans.begin(),ans.end());for(int i=0;i<ans.size();i++)cout<<ans[i]<<"";return0;}7. 简单题#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define maxn 1001int main(){char a[maxn],b[maxn];scanf("%s%s",&a,&b);int len=strlen(a),cnt=0;for(int i=0;i<len;i++){if(a[i]==b[i]) continue;else{ //遍历过去,发现两个字符不相等的话,操作加⼀,把后⾯字符b[i+1]反转即可 cnt++;if(b[i+1]=='o') b[i+1]='*';else b[i+1]='o';}}cout<<cnt<<endl;return0;}7.错误票据简单题读题+简单哈希#include<iostream>using namespace std;#define maxn 100001int has[maxn]={0};int main(){int n,x;cin>>n;int A=maxn,B=0;for(int i=0;i<n;i++){while(cin>>x){has[x]++;if(x<A) A=x;if(x>B) B=x;char ch = getchar();if(ch=='\n') break;}}int d,c;//从题意可知,只有⼀个断数和重复数,总的数⽬为B-A+1个数字for(int i=A;i<=B;i++){if(has[i]==2) c=i;//hash值为2.说明这个数有重复if(has[i]==0) d=i;//hash值为0.说明这个数没有输⼊过}cout<<d<<""<<c<<endl;return0;}-------------------continue--------------------。

蓝桥杯题库的历届真题

蓝桥杯题库的历届真题

1.历届试题矩阵翻硬币时间限制:1.0s 内存限制:256.0MB问题描述小明先把硬币摆成了一个n 行m 列的矩阵。

随后,小明对每一个硬币分别进行一次Q 操作。

对第x行第y列的硬币进行Q 操作的定义:将所有第i*x 行,第j*y 列的硬币进行翻转。

其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。

当小明对所有硬币都进行了一次Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。

小明想知道最开始有多少枚硬币是反面朝上的。

于是,他向他的好朋友小M寻求帮助。

聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。

然而小明很懒,不愿意照做。

于是小明希望你给出他更好的方法。

帮他计算出答案。

输入格式输入数据包含一行,两个正整数n m,含义见题目描述。

输出格式输出一个正整数,表示最开始有多少枚硬币是反面朝上的。

样例输入2 3样例输出1数据规模和约定对于10%的数据,n、m <= 10^3;对于20%的数据,n、m <= 10^7;对于40%的数据,n、m <= 10^15;对于10%的数据,n、m <= 10^1000(10的1000次方)。

2.历届试题兰顿蚂蚁时间限制:1.0s 内存限制:256.0MB问题描述兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。

平面上的正方形格子被填上黑色或白色。

在其中一格正方形内有一只“蚂蚁”。

蚂蚁的头部朝向为:上下左右其中一方。

蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。

规则虽然简单,蚂蚁的行为却十分复杂。

刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。

蚂蚁的路线是很难事先预测的。

你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。

蓝桥杯培训试题

蓝桥杯培训试题

“蓝桥杯”软件设计大赛培训试题一、基础练习(共26道)【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....【程序2】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

【程序3】题目:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

【程序4】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

程序分析:利用辗除法。

【程序5】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用while语句,条件为输入的字符不为'\n'.【程序6】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

程序分析:关键是计算出每一项的值。

【程序7】题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。

例如6=1+2+3.编程找出1000以内的所有完数。

【程序8】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?【程序9】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

第1-7届蓝桥杯决赛试题及答案

第1-7届蓝桥杯决赛试题及答案

第1-7届蓝桥杯决赛试题及答案2011年第1届蓝桥杯决赛试题及答案1.四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。

我们可以通过计算机验证其在有限范围的正确性。

对于大数,简单的循环嵌套是不适宜的。

下面的代码给出了一种分解方案。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

int f(int n, int a[], int idx){if(______________) return 1; // 填空1if(idx==4) return 0;for(int i=(int)sqrt(n); i>=1; i--){a[idx] = i;if(_______________________)return 1; // 填空2}return 0;}int main(int argc, char* argv[]){for(;;){int number;printf("输入整数(1~10亿):");scanf("%d",&number);int a[] = {0,0,0,0};int r = f(number, a, 0);printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);}return 0;}2.加密在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。

解密的方法就是再执行一次同样的操作。

加密过程中n位二进制数会循环使用。

并且其长度也可能不是8的整数倍。

下面的代码演示了如何实现该功能。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

蓝桥杯选拔赛题目5道(2小时)

蓝桥杯选拔赛题目5道(2小时)

上海电机学院“蓝桥杯”校内选拔赛试题考试时间:共计2小时(注意:修改本文档文件名为:班级学号姓名,最后提交该文档)一、结果填空题(共2题)1、标题:最大最小公倍数问题描述:已知一个正整数N,问从1~N-1中任选出三个数,他们的最小公倍数最大可以为多少。

输入格式:输入一个正整数N。

输出格式:输出一个整数,表示你找到的最小公倍数。

样例输入:9样例输出:504数据规模与约定1 <= N <= 106。

结果填空:源代码如下:2、标题: 振兴中华问题描述:小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

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

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?答案是一个整数,请通过浏览器直接提交该数字。

结果填空:源代码如下:二、代码填空题(共1题)1、标题:三部排序问题描述:一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。

我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。

注意问题的特点是:负数区域和正数区域内并不要求有序。

可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。

其中x指向待排序的整型数组,len是数组的长度。

void sort3p(int* x, int len){int p = 0;int left = 0;int right = len-1;while(p<=right){if(x[p]<0){int t = x[left];x[left] = x[p];x[p] = t;left++;p++;}else if(x[p]>0){int t = x[right];x[right] = x[p];x[p] = t;right--;}else{__________________________; //填空位置}}}如果给定数组:25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0则排序后为:-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25请分析代码逻辑,并推测划线处的代码。

蓝桥杯c++本科决赛真题

蓝桥杯c++本科决赛真题

蓝桥杯决赛共五道题一:【结果填空】(满分5分)1949年的国庆节(10月1日)是星期六。

今年(2012)的国庆节是星期一。

那么,从建国到现在,有几次国庆节正好是星期日呢?只要答案,不限手段!可以用windows日历,windows计算器,Excel公式,。

当然,也可以编程!二:【代码填空】(满分16分)某工业监控设备不断发回采样数据。

每个数据是一个整数(0到1000之间)。

各个数据间用空白字符(空格,TAB或回车换行)分隔。

这些数据以文本形式被存储在文件中。

因为大多数时候,相邻的采样间隔数据是相同的,可以利用这个特征做数据的压缩存储。

其方法是:对n(n>1)个连续相同的数字只记录n和该数字本身;对m(m>0)个连续不重复的数字,则记录m*-1 和这些数字本身(之所以用负数,是为了与第一种情况区分,便于解压缩)。

例如:采样数字:12 34 34 25 25 25 25 11 15 17 28 14 22 22 22 13则根据上述规则变化后:-1 12 2 34 4 25 -5 11 15 17 28 14 3 22 -1 13下面的程序实现了这个功能。

请仔细阅读分析代码,填写空白的部分。

void pop(int s, int* buf, int c, FILE* fp){int i;if(s){fprintf(fp, "%d %d ", c, *buf);}else{fprintf(fp, "%d ", -c);for(i=0; i<c; i++){fprintf(fp, "%d ", buf[i]);}}}void dopack(FILE* r, FILE* w){int buf[BUF_N];int pos = 0; // 下一个数字在buf中将要存放的位置int c = 0; // 当前段已读入的整数个数int pst;int cst;while(fscanf(r, "%d", buf+pos)==1){if(c==0){c = pos = 1;continue;}if(c==1){pst = buf[0] == buf[1];pos = pos + 1 - pst;c = 2;continue;}cst = buf[pos-1] == buf[pos];if(pst && !cst){pop(pst, buf, c, w);buf[0] = buf[1];c = pos = 1;pst = cst;}else if(!pst && cst || pos == BUF_N-1){pop(pst, buf, c-1, w);buf[0] = buf[pos-1];c = 2;if(!cst){buf[1] = buf[pos];pos = 2;}else{pos = 1;pst = ______________; // 填空1}}else{c++;if(!pst) pos++;}} // whileif(c>0) _____________________________; // 填空2 }void main(){FILE* rfp;FILE* wfp;if((rfp=fopen(RFILE, "r")) == NULL){printf("can not open %s!\n", RFILE);exit(1);}if((wfp=fopen(WFILE, "w")) == NULL){printf("can not open %s!\n", WFILE);fclose(rfp);exit(2);}dopack(rfp, wfp);fclose(wfp);fclose(rfp);}【注意】只填写缺少的部分,不要抄写已有的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.在excel中计算日期天数的输入方式=“2003-1-1”—“2004- 1-1”加回车键就可。

2.求最大公约数时可以用递归int gcd(int p, int q){if (q == 0)return p;int r = p % q ;gcd(q, r );}3.上楼梯走一步,或者走两步的所有可能递归关系是f(n) = f(n-1) + f(n - 2);其中:偶数步= 奇数步+ 1;例如n = 3; 时奇数步为1中(1,1,1)偶数步为(1,2)(2,1);4.走方格式走的步数递归式为:f(n,m) = f(n-1,m) + f(n + m-1);4问题描述二叉树可以用于排序。

其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。

当遇到空子树时,则把该节点放入那个位置。

比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如下图所示,其中.表示空白。

...|-1210-|...|-8-|.......|...|-7.......|-5-|...........|-4本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。

输入格式输入数据为一行空格分开的N个整数。

N<100,每个数字不超过10000。

输入数据中没有重复的数字。

输出格式输出该排序二叉树的横向表示。

为了便于评卷程序比对空格的数目,请把空格用句点代替:样例输入110 5 20样例输出1...|-2010-|...|-5样例输入25 10 20 8 4 7样例输出2.......|-20..|-10-|..|....|-8-|..|........|-75-|..|-4问题描述X星球十分特殊,它的自转速度与公转速度相同,所以阳光总是以固定的角度照射。

最近,X星球为发展星际旅游业,把空间位置出租给Y国游客来晒太阳。

每个租位是漂浮在空中的圆盘形彩云(圆盘与地面平行)。

当然,这会遮挡住部分阳光,被遮挡的土地植物无法生长。

本题的任务是计算某个农场宜于作物生长的土地面积有多大。

输入格式输入数据的第一行包含两个整数a, b,表示某农场的长和宽分别是a和b,此时,该农场的范围是由坐标(0, 0, 0), (a, 0, 0), (a, b, 0), (0, b, 0)围成的矩形区域。

第二行包含一个实数g,表示阳光照射的角度。

简单起见,我们假设阳光光线是垂直于农场的宽的,此时正好和农场的长的夹角是g度,此时,空间中的一点(x, y, z)在地面的投影点应该是(x + z * ctg(g度), y, 0),其中ctg(g度)表示g度对应的余切值。

第三行包含一个非负整数n,表示空中租位个数。

接下来 n 行,描述每个租位。

其中第i行包含4个整数xi, yi, zi, ri,表示第i 个租位彩云的圆心在(xi, yi, zi)位置,圆半径为ri。

输出格式要求输出一个实数,四舍五入保留两位有效数字,表示农场里能长庄稼的土地的面积。

样例输入10 1090.015 5 10 5样例输出21.46样例输入8 890.014 4 10 5样例输出1.8120 1045.025 0 5 58 6 14 6样例输出130.15问题描述X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。

你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)比如:a d b c e f 就是合格的刷漆顺序。

c e fd a b 是另一种合适的方案。

当已知 N 时,求总的方案数。

当N较大时,结果会迅速增大,请把结果对 1000000007 (十亿零七) 取模。

输入格式输入数据为一个正整数(不大于1000)输出数据为一个正整数。

样例输入2样例输出24样例输入3样例输出96样例输入22样例输出359635897问题描述幸运数是波兰数学家乌拉姆命名的。

它采用与生成素数类似的“筛法”生成。

首先从1开始写出自然数1,2,3,4,5,6,....1 就是第一个幸运数。

我们从2这个数开始。

把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧,重新记序,为:1 3 5 7 9 .... 。

这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。

注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, ...此时7为第3个幸运数,然后再删去序号位置能被7整除的(19,39,...)最后剩下的序列类似:1, 3, 7, 9, 13, 15, 21, 25, 31, 33, 37, 43, 49, 51, 63, 67, 69, 73, 75, 79, ... 输入格式输入两个正整数m n, 用空格分开 (m < n < 1000*1000)输出格式程序输出位于m和n之间的幸运数的个数(不包含m和n)。

样例输入11 20样例输出15样例输入230 69样例输出28问题描述X 国的一个网络使用若干条线路连接若干个节点。

节点间的通信是双向的。

某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。

该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。

源地址和目标地址可以相同,但中间节点必须不同。

如下图所示的网络。

1 ->2 ->3 -> 1 是允许的1 ->2 -> 1 -> 2 或者 1 -> 2 ->3 -> 2 都是非法的。

输入格式输入数据的第一行为两个整数N M,分别表示节点个数和连接线路的条数(1<=N<=10000; 0<=M<=100000)。

接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!=v)。

输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环。

输出格式输出一个整数,表示满足要求的路径条数。

样例输入13 31 22 31 3样例输出16样例输入24 41 22 33 11 4样例输出210问题描述如下图所示,3 x 3 的格子中填写了一些整数。

+--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。

本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。

如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。

如果无法分割,则输出 0。

输入格式程序先读入两个整数 m n 用空格分割 (m,n<10)。

表示表格的宽度和高度。

接下来是n行,每行m个正整数,用空格分开。

每个整数不大于10000。

输出格式输出一个整数,表示在所有解中,包含左上角的分割区可能包含的最小的格子数目。

样例输入13 310 1 5220 30 11 2 3样例输出13样例输入24 31 1 1 11 30 80 21 1 1 100样例输出210问题描述人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了。

一些节点之间有道路相连,所有的节点和道路形成了一棵树。

一共有 n 个节点,这些节点被编号为 1~n 。

人类将 k 个机器人送上了火星,目的是采集这些金属。

这些机器人都被送到了一个指定的着落点, S 号节点。

每个机器人在着落之后,必须沿着道路行走。

当机器人到达一个节点时,它会采集这个节点蕴藏的所有金属矿。

当机器人完成自己的任务之后,可以从任意一个节点返回地球。

当然,回到地球的机器人就无法再到火星去了。

我们已经提前测量出了每条道路的信息,包括它的两个端点 x 和 y,以及通过这条道路需要花费的能量 w 。

我们想花费尽量少的能量采集所有节点的金属,这个任务就交给你了。

输入格式第一行包含三个整数 n, S 和 k ,分别代表节点个数、着落点编号,和机器人个数。

接下来一共 n-1 行,每行描述一条道路。

一行含有三个整数 x, y 和 w ,代表在 x 号节点和 y 号节点之间有一条道路,通过需要花费 w 个单位的能量。

所有道路都可以双向通行。

输出格式输出一个整数,代表采集所有节点的金属所需要的最少能量。

样例输入6 1 31 2 12 3 12 4 10002 5 10001 6 1000样例输出3004样例说明所有机器人在 1 号节点着陆。

第一个机器人的行走路径为 1->6 ,在 6 号节点返回地球,花费能量为1000。

第二个机器人的行走路径为 1->2->3->2->4 ,在 4 号节点返回地球,花费能量为1003。

第一个机器人的行走路径为 1->2->5 ,在 5 号节点返回地球,花费能量为1001。

数据规模与约定本题有10个测试点。

对于测试点 1~2 , n <= 10 , k <= 5 。

对于测试点 3 , n <= 100000 , k = 1 。

对于测试点 4 , n <= 1000 , k = 2 。

对于测试点 5~6 , n <= 1000 , k <= 10 。

对于测试点 7~10 , n <= 100000 , k <= 10 。

道路的能量 w 均为不超过 1000 的正整数。

问题描述农夫约翰正在针对一个新区域的牛奶配送合同进行研究。

他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条标号为(1..P)的航路相连。

每一条公路i或者航路i表示成连接城镇A i(1<=A_i<=T)和B i(1<=B i<=T)代价为C i。

每一条公路,C i的范围为0<=C i<=10,000;由于奇怪的运营策略,每一条航路的C i可能为负的,也就是-10,000<=C i<=10,000。

每一条公路都是双向的,正向和反向的花费是一样的,都是非负的。

每一条航路都根据输入的A i和B i进行从A i->B i的单向通行。

实际上,如果现在有一条航路是从A i到B i的话,那么意味着肯定没有通行方案从B i回到A i。

农夫约翰想把他那优良的牛奶从配送中心送到各个城镇,当然希望代价越小越好,你可以帮助他嘛?配送中心位于城镇S中(1<=S<=T)。

输入格式输入的第一行包含四个用空格隔开的整数T,R,P,S。

相关文档
最新文档