蓝桥杯练习题库 3算法训练题.(DOC)

合集下载

蓝桥杯练习题库 3算法训练之VIP题综述

蓝桥杯练习题库 3算法训练之VIP题综述

算法训练黑白无常时间限制:1.0s 内存限制:256.0MB查看参考代码问题描述某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话“我看到x张白色纸条和y张黑色的纸条”,又已知每个头上贴着白色纸的人说的是真话、每个头上贴着黑色纸的人说的是谎话,现在要求你判断哪些人头上贴着的是白色的纸条,如果无解输出“NoSolution.”;如果有多组解,则把每个答案中贴白条的人的编号按照大小排列后组成一个数(比如第一个人和第三个人头上贴着的是白纸条,那么这个数就是13;如果第6、7、8个人都贴的是白纸条,那么这个数就是678)输出最小的那个数(如果全部都是黑纸条也满足情况的话,那么输出0)输入格式第一行为一个整数n,接下来n行中的第i行有两个整数x和y,分别表示第i个人说“我看到x张白色纸条和y张黑色的纸条”。

输出格式一行。

如果无解输出“NoSolution.”。

否则输出答案中数值(具体见问题描述)最小的那个,如果全部都是黑纸条也满足情况的话,那么输出0样例输入21 01 0样例输出样例输入53 10 41 34 01 3样例输出35数据规模和约定n<=8#include <stdio.h>#include <math.h>int n;int x[8],y[8];int isok(int a[],int num,int value) //第i个人的话是否成立num为人下标value 为0白或者1黑{int black=0,white=0,i;for(i=0;i<n;i++){if(i!=num){if(a[i]) black++; //黑色else white++; //白色}}if(value) //黑{if(x[num]==white && y[num]==black) return 0;else return 1;}else //白{if(x[num]==white && y[num]==black) return 1;else return 0;}}int main(){int i,j,k,sign,min=90000000,num;int a[8],b[8];scanf("%d",&n);for(i=0;i<n;i++)scanf("%d%d",x+i,y+i);for(i=0;i<pow(2,n);i++){k=i;for(j=0;j<n;j++){a[j]=k%2;k/=2;}sign=1;for(j=0;j<n;j++){if(isok(a,j,a[j])==0){sign=0;break;}}if(sign){k=1;num=0;for(j=n-1;j>=0;j--){if(a[j]==0){num+=k*(j+1);k*=10;}}if(num<min) min=num;}}if(min==90000000) printf("NoSolution.");else{for(i=0;i<n;i++)b[i]=1;for(i=0;i<n;i++){if(isok(b,i,b[i])==0){sign=0;break;}}if(sign==0) printf("%d",min);else printf("0");}return 0;}#include<stdio.h>#include<string.h>#include<math.h>int mt[9][2],n;int max[9]={9};int xl[9]={9};bool ifc();int main(){int i,j,m,fi,k,flag;scanf("%d",&n);for(i=1;i<=n;i++) scanf("%d %d",&mt[i][0],&mt[i][1]);m=pow(2,n);for(i=0;i<m;i++){for(fi=i,j=1,xl[0]=0;j<=n;j++){xl[j]=fi&1;fi>>=1;if(xl[j]) xl[0]++;//真话数量}if(xl[0]>max[0]) continue;if(ifc())//成立{// for(k=1;k<=n;k++) printf("%d",xl[k]);// printf(" :%d\n",xl[0]);if(max[0]==xl[0]){for(flag=k=1;k<=n;k++){if(max[k]>xl[k]){flag=0;break;}else if(max[k]<xl[k]){break;}}if(!flag) continue;}for(k=0;k<=n;k++) max[k]=xl[k];}}if(max[0]==9) printf("NoSolution.\n");else if(max[0]==0) printf("0\n");else{for(i=1;i<=n;i++) if(max[i]) printf("%d",i);putchar('\n');}}bool ifc(){int i;for(i=1;i<=n;i++){if(xl[i])//若此人说真话{if(mt[i][0]!=xl[0]-1) return false;}else{if(mt[i][0]==xl[0]) return false;}}return true;}算法训练数的统计时间限制:1.0s 内存限制:256.0MB查看参考代码问题描述在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。

蓝桥杯小学试题及答案

蓝桥杯小学试题及答案

蓝桥杯小学试题及答案一、选择题(每题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字的英语短文。

蓝桥杯题-基础练习(带答案).doc

蓝桥杯题-基础练习(带答案).doc

基础练习21-基础练习Sine之舞问题描述最近町为他的奶牛们开设了数学分析课,FJ知道若耍学好这门课,必须有一个好的三角函数基本功。

所以他准备和奶牛们做-个“SineZ舞”的游戏,寓教于乐,提高奶牛们的计算能力。

不妨设An=sin(l - sin (2+sin (3 - sin (4+... sin(n))...)Sn二(…(Al+n)A2+n-1)A3+.・• +2)An+lFJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。

输入格式仅冇一个数:N<201。

输出格式请输出相应的表达式Sn,以一个换行符结束。

输出屮不得含有多余的空格或换行、回车符。

样例输入3样例输出((sin(l)+3)sin(l-sin(2))+2)sin(l-sin(2 + sin(3)))+1解答:import java.util.Seanner;public class Main{* @param args*/public static void main(String[] args) {// TODO Auto-generated method stubSeanner seanner=new Seanner(System.in);System.out.pri ntln (sflnteger.parsel nt(sca nner.n extLi ne()), 1));//System.out.print(sin(3, 1));}static String s(int n」nt i)讦(i==n) return ""+An(n)+"+"+(n-i+l);}else {return ,,("+An(i)+"+"+(n-i+l)+,,)"+""+s(n, i+l)+"";}}static String An(int n){return sin(n, 1);}static String sin(int n,int i){if(i==n){return ”sin(”+n+")”;}else {if(i%2==0)return "sin("+i+"+"+sin(n z i+l)+")";//(int)Math.pow(-lJ)else {return "sin("+i+"-"+sin(n/ i+l)+,,)'^;}}}}2 2-基础练习FJ的字符串FJ在沙盘上写了这样一些字符串:Al = “A”A2 = “ABA”A3 = “ABACABA”A4 = a ABACABADABACABA v• • • • • •你能找出其屮的规律并写所有的数列AN吗?输入格式仅有一个数:N W 26。

(完整word版)蓝桥杯练习系统题目汇总,推荐文档

(完整word版)蓝桥杯练习系统题目汇总,推荐文档

蓝桥杯练习系统题目汇总:入门训练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<stdlib.h>2.#include<stdio.h>3.#define MOD 100074.#define MAXN 10000015.int n, i, F[MAXN];6.int main()7.{8.scanf("%d", &n);9.F[1] = 1;10.F[2] = 1;11.for(i = 3; i <= n; ++i)12.F[i] = (F[i-1] + F[i-2]) % MOD;13.printf("%d\n", F[n]);14.return0;15.}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,求圆的面积。

scratch蓝桥杯编程题3训练

scratch蓝桥杯编程题3训练

三、编程题,共两题,每题15分。

36:森林的一天1.准备工作(1)选择背景Forest(2)添加角色Bear,Bat,Butterfly 1,Dinosaur12.功能实现(1)将角色的大小都变成50,并将角色按照下图的位置摆放好。

(2)点击绿旗后,设置角色的初始位置,重复播放背景音乐Cave。

(3)小猫先走到Bear的位置,说“Bear你好“2秒,然后改变方向,走到Dinosaur1旁边,播放声音“Grunt” 等待播完。

(4)然后走到Butterfly1身边,并改变颜色特效。

最后设置旋转方式为左右翻转,到达Bat旁边,变成半透明状态。

评分标准:(1)点击绿旗后,角色的初始大小为50,小猫在舞台左边缘的中间位置,其他四个动物的位置分别在示意图位置,舞台背景为Forest(3分)(2)点击绿旗后,一直播放背景音乐Cave。

(2分)(3)小猫先走到Bear的位置,说“Bear你好“2秒,然后改变方向,走到Dinosaur1旁边,播放声音“Grunt” 等待播完。

(5分)(4)然后走到Butterfly1身边,并改变颜色特效(数值不限)。

最后设置旋转方式为左右翻转,到达Bat旁边,变成半透明状态(数值不限)。

(5分)[填空题]_________________________________37.舞者凯希1.准备工作(1)从素材库上传背景:舞台1、舞台2;(2)删除小猫角色,添加Cassy Dance角色,并添加声音dance magic。

2.功能实现(1)Cassy Dance面向右侧,初始造型为【CassyDance-a】,初始坐标为【7,50】,并说“Let’s dance!!”2秒;(2)2秒后,播放声音【dance magic】;(3)开始跳舞:Cassy Dance每隔1秒切换一次造型;(4)Cassy Dance每切换一次造型,都要旋转15度,方向依次为右-左-左-右;(5)在Cassy Dance开始跳舞前,背景要换成【舞台1】;(6)当CassyDance开始舞蹈的后,背景要在【舞台2】和【舞台1】之间来回切换,一共切换8次,每次等待1秒;(7)每次舞台切换时,舞台的【颜色】增加3。

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

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

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. 在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)比使用数组更有效,并解释原因。

蓝桥杯备考真题演练(6套含答案)

蓝桥杯备考真题演练(6套含答案)

蓝桥杯备考真题演练(一)执行如下图所示的程序框图,输出的x的值是()。

A.3B.5C.6D.7根据下面流程图回答下列问题。

(1)若输入1,则输出的数为;(2)若输入123,则输出的数为;(3)若输出的数为123,则输入的数或。

2022年起蓝桥杯参赛项目增加“计算思维”,适合小学1-6学段学员参加成绩前10%进入国赛,10%-60%进入省赛执行如下图所示的流程图,输出a的值是()。

A.15B.16C.17D.18蓝桥杯备考真题演练(二)请根据前三个图形中颜色的规律,最后一个图形的右上角最适合的颜色是()A.绿色B.黄色C.蓝色D.黑色如下图,琦琦有一个花瓣风车,如果琦琦逆时针转小动物们在玩换座位的游戏。

开始时,企鹅、鳄鱼、猫头鹰、狐狸分别坐在如下图(左)所示的位置。

第1次换座位,上下的动物互换;第2次换座位,左右的动物互换;第3次上下互换;第4次左右互换;……按照此规律进行下去,第95次换座位后,企鹅坐在什么位置?()A. B. C. D.有两个没有刻度,容积分别为6升和8升的上下径不同的大杯子,和无限多的水,至少倒水次才能量出4升水。

(最初两个杯子都是空的)有2个砝码,分别重6g 和9g,使用这2个砝码在天平上称12g 茶叶,最少称几次?()A.1B.2C.3D.4蓝桥杯备考真题演练(三)有16个外观相同的球,其中有一个次品,次品比其他球轻,其它球的重量相等。

用一个没有砝码的天平,至少称重几次才能保证找到次品?()A.2B.3C.4D.5从红、黄、蓝三种颜色中至少选取一种颜色,有多少种不同的选法?()A.3B.6C.7D.10皮皮买了一些小彩旗,有红、绿、蓝3种颜色,皮皮准备用它们装饰旅行社。

旅行社门前需要挂4面彩旗,皮皮希望相邻的彩旗颜色不相同,有种不同的方法。

蓝桥杯备考真题演练(四)小维忘记了密码锁的密码,只记得密码是四位,密码里肯定有数字1和2,没有其他数字。

他最少要试多少次,才能保证打开锁?()A.12B.14C.16D.18松鼠王国里诞生了一名松鼠宝宝,松鼠妈妈要按照松鼠王国的起名规则来给他起名。

蓝桥杯c语言试题(3)

蓝桥杯c语言试题(3)

蓝桥杯c语言试题(3)蓝桥杯c语言试题2015};099100f(x, 0, 0);101102printf("%d\n", N);103104return 0;105}第八题:编程题:这个程序的任务就是把一串拼音字母转换为6位数字(密码)。

我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。

变换的过程如下:第一步. 把字符串6个一组折叠起来,比如wangximing则变为:wangximing第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:228 202 220 206 120 105第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。

例如: 228 => 2+2+8=12 => 1+2=3上面的数字缩位后变为:344836, 这就是程序最终的输出结果!要求程序从标准输入接收数据,在标准输出上输出结果。

输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。

输出格式为:n行变换后的6位密码。

第九题:足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。

假设有甲、乙、丙、丁四个球队。

根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:甲乙丙丁甲– 0.1 0.3 0.5乙 0.9 – 0.7 0.4丙 0.7 0.3 – 0.2丁 0.5 0.6 0.8 –数据含义:甲对乙的取胜概率为0.1,丙对乙的胜率为0.3,…现在要举行一次锦标赛。

双方抽签,分两个组比,获胜的两个队再争夺冠军。

(参见【1.jpg】)请你进行10万次模拟,计算出甲队夺冠的概率。

第十题:串“abcd”每个字符都向右移位,最右的移动到第一个字符的位置,就变为“dabc”。

蓝桥杯专科组c语言试题及答案

蓝桥杯专科组c语言试题及答案

蓝桥杯专科组c语言试题及答案蓝桥杯专科组C语言试题及答案1. 单项选择题(1) 在C语言中,下列哪个选项是正确的字符串定义方式?A. char str[] = "Hello";B. char str[] = 'Hello';C. char str[] = {"Hello"};D. char str[] = "Hello";答案:A(2) 下列关于C语言函数的描述中,错误的是?A. 函数可以没有返回值。

B. 函数可以有多个返回值。

C. 函数可以有默认参数。

D. 函数可以有不定数量的参数。

答案:C2. 程序填空题请在空白处填入正确的代码,以实现以下功能:计算并输出1到100之间所有偶数的和。

#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}3. 编程题编写一个C语言程序,实现以下功能:接受用户输入的两个整数,输出它们的和。

#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum is: %d\n", sum);return 0;}4. 简答题(1) 请简述C语言中指针的概念。

答案:在C语言中,指针是一种变量,它存储了另一个变量的内存地址。

蓝桥杯练习题库-3算法训练题

蓝桥杯练习题库-3算法训练题

算法训练图形显示时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * *#include<stdio.h>int main(){int i,j,a[100][100],n;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++)for(j=0;j<n-i;j++){printf("*");if(j!=n-i-1)printf(" ");if(j==n-1-i)printf("\n");}}}算法训练排序时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述 编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。

输入格式:输入只有一行,即三个整数,中间用空格隔开。

输出格式:输出只有一行,即排序后的结果。

输入输出样例样例输入9 2 30样例输出30 9 2#include<stdio.h>#include<stdlib.h>#define num 100int main(void){int i,j,t,a[3]={0};for (i=0;i<3;i++){scanf("%d",&a[i]);}for (i=0;i<3;i++)for (j=i;j<3;j++)if (a[i]<=a[j]){t=a[i];a[i]=a[j];a[j]=t;} for (i=0;i<3;i++){printf("%d",a[i]);if(i!=2) printf(" ");}printf("\n");return 0;}算法训练2的次幂表示时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。

蓝桥杯历年试题(DOC)

蓝桥杯历年试题(DOC)

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国游客来晒太阳。

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

蓝桥杯题库中的算法训练试题

蓝桥杯题库中的算法训练试题

1.算法训练P1103时间限制:1.0s 内存限制:256.0MB编程实现两个复数的运算。

设有两个复数和,则他们的运算公式为:要求:(1)定义一个结构体类型来描述复数。

(2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。

(3)必须使用结构体指针的方法把函数的计算结果返回。

说明:用户输入:运算符号(+,-,*,/) a b c d.输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:- 2.5 3.6 1.5 4.9输出:1.00+-1.30i2.算法训练Lift and Throw时间限制:3.0s 内存限制:256.0MB问题描述给定一条标有整点(1, 2, 3, ...)的射线. 定义两个点之间的距离为其下标之差的绝对值.Laharl, Etna, Flonne一开始在这条射线上不同的三个点, 他们希望其中某个人能够到达下标最大的点.每个角色只能进行下面的3种操作, 且每种操作不能每人不能进行超过一次.1.移动一定的距离2.把另一个角色高举过头3.将举在头上的角色扔出一段距离每个角色有一个movement range参数, 他们只能移动到没有人的位置, 并且起点和终点的距离不超过movement range.如果角色A和另一个角色B距离为1, 并且角色B没有被别的角色举起, 那么A就能举起B. 同时, B会移动到A的位置,B原来所占的位置变为没有人的位置. 被举起的角色不能进行任何操作, 举起别人的角色不能移动.同时, 每个角色还有一个throwing range参数, 即他能把举起的角色扔出的最远的距离. 注意, 一个角色只能被扔到没有别的角色占据的位置. 我们认为一个角色举起另一个同样举起一个角色的角色是允许的. 这种情况下会出现3个人在同一个位置的情况. 根据前面的描述, 这种情况下上面的两个角色不能进行任何操作, 而最下面的角色可以同时扔出上面的两个角色. 你的任务是计算这些角色能够到达的位置的最大下标, 即最大的数字x, 使得存在一个角色能够到达x.输入格式输入共三行, 分别为Laharl, Etna, Floone的信息.每一行有且仅有3个整数, 描述对应角色的初始位置, movement range, throwing range.数据保证3个角色的初始位置两两不相同且所有的数字都在1到10之间.</div>输出格式仅有1个整数, 即Laharl, Etna, Flonne之一能到达的最大距离.样例输入9 3 34 3 12 3 3样例输出15样例说明一开始Laharl在位置9, Etna在位置4, Flonne在位置2.首先, Laharl移动到6.然后Flonne移动到位置5并且举起Etna.Laharl举起Flonne将其扔到位置9.Flonne把Etna扔到位置12.Etna移动到位置15.3.算法训练Multithreading时间限制:1.0s 内存限制:256.0MB问题描述现有如下一个算法:repeat ni timesyi := yy := yi+1end repeat令n[1]为你需要算加法的第一个数字,n[2]为第二个,...n[N]为第N个数字(N为需要算加法的数字个数),并令y初始值为0,先令i=1运行这个算法(如上所示,重复n[i]次),然后令i=2运行这个算法。

蓝桥杯VIP练习题(DOC)

蓝桥杯VIP练习题(DOC)

1.基础练习阶乘计算时间限制:1.0s 内存限制:512.0MB问题描述输入一个正整数n,输出n!的值。

其中n!=1*2*3*…*n。

算法描述n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。

使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。

将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。

首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式输入包含一个正整数n,n<=1000。

输出格式输出n!的准确值。

样例输入10样例输出36288002.基础练习高精度加法时间限制:1.0s 内存限制:512.0MB问题描述输入两个整数a和b,输出这两个整数的和。

a和b都不超过100位。

算法描述由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。

对于这种问题,一般使用数组来处理。

定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。

同样可以用一个数组B来存储b。

计算c= a+ b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。

然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。

依此类推,即可求出C的所有位。

最后将C输出即可。

输入格式输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。

两个整数都不超过100位,两数的最高位都不是0。

输出格式输出一行,表示a + b的值。

样例输入201001222010012212345678902010012220100122样例输出201001222030112334546680123. 基础练习Huffuman树时间限制:1.0s 内存限制:512.0MB问题描述Huffman树在编码中有着广泛的应用。

蓝桥杯算法训练习题与官方答案

蓝桥杯算法训练习题与官方答案

算法训练编号:ALGO-1题目:区间k大数查询列关键字:排序查找类型:普通试题问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。

输入格式第一行包含一个数n,表示序列长度。

第二行包含n个正整数,表示给定的序列。

第三个包含一个正整数m,表示询问个数。

接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。

序列元素从1开始标号。

输出格式总共输出m行,每行一个数,表示询问的答案。

样例输入51 2 3 4 521 5 22 3 2样例输出42数据规模与约定对于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<nums.length; i++){nums[i] = readInt();}for(int i=readInt(); i>0; i--){int a = readInt();int b = readInt();int c = readInt();int[] tn = new int[b-a+1];for(int j=0; j<tn.length; j++){tn[j] = nums[a-1+j];}Arrays.sort(tn);System.out.println(tn[tn.length-c]);}}private static int readInt() throws IOException{int i,sum=0;while(((i=in.read())&48) != 48 || i>57);for(;(i&56) == 48 || (i&62) == 56; i=in.read())sum = sum*10 + (i&15);return sum;}}编号:ALGO-2题目:最大最小公倍数关键字:贪心类型:普通试题问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

蓝桥杯省赛题3(实践题)

蓝桥杯省赛题3(实践题)

灯塔童程蓝桥杯模拟题(三)实践题第一题:画图,如图所示,利用画笔模块画出下面图片中所示的图案。

准备工作:本地导入角色“画笔”编程实现:请用画笔工具画出此图案,原型为正六边形,在六个节点处需要加上一个实心圆。

提交保存文件名为“1-画图.sb2”。

第二题:猜数游戏,同学们都玩过猜数字游戏,今天我们就自己设置一个猜数系统,让我们自己设计并做给自己玩吧!准备工作:导入角色库中的“Devin”编程实现:请设置好游戏开始的话语,并设置一个计时器控制游戏时间为1分钟。

利用随机数设置系统的随机数字范围1-100,通过询问让我们进行猜数。

提交保存文件名为2-猜数游戏。

第三题:利用scratch完成一个捕鼠游戏。

准备工作:导入角色库中的“mouse1”,捕鼠背景图片。

编程实现:利用列表储存X和Y的值,随机移动老鼠的位置。

点击老鼠变量Hits+1分,没有点到变量misses+1分。

提交保存文件名为3-捕鼠游戏。

第四题:利用scratch完成一个板上弹球游戏。

准备工作:导入角色库中的“ball-soccer”,自己绘制蓝色陷阱和红色搬砖,蓝色木板。

编程实现:要求弹球能够碰到换红砖得分,红砖消失一秒后再出现,碰到蓝色陷阱则游戏结束。

碰到木板则可以向反方向反弹,碰到边缘也反弹。

玩家需要控制木板,完成弹球不断的弹动。

提交保存文件名为4-弹球游戏注意:1.弹球向上的方向使随机选取的,随机范围:-80到-15之间。

2.弹球碰到木板后的反弹方向选取的随机范围:180-弹球的方向。

第五题:利用Scratch制作一个“接礼物”游戏准备工作:导入角色库中的“bowl”和“bananas”和“cheesy-puffs”以及“ghost2”。

编程实现:利用运动积木完成bowl的移动。

设置一个计时器为游戏计时1分钟。

角色“bananas”“cheesy-puffs”“ghost2”随机在舞台上空出现并垂直下落,碰到边缘就消失,碰到角色“bowl”会加分。

蓝桥杯试题及答案c语言

蓝桥杯试题及答案c语言

蓝桥杯试题及答案c语言蓝桥杯试题及答案C语言1. 题目一:计算阶乘要求:编写一个程序,输入一个非负整数n,输出n的阶乘。

```c#include <stdio.h>int main() {int n, i;long long factorial = 1;printf("请输入一个非负整数:");scanf("%d", &n);for(i = 1; i <= n; i++) {factorial *= i;}printf("%d的阶乘是:%lld\n", n, factorial);return 0;}```2. 题目二:寻找最大值要求:给定一个整数数组,找出数组中的最大值。

```c#include <stdio.h>int main() {int arr[5] = {10, 20, 30, 40, 50};int max = arr[0];for(int i = 1; i < 5; i++) {if(arr[i] > max) {max = arr[i];}}printf("数组中的最大值是:%d\n", max);return 0;}```3. 题目三:字符串反转要求:编写一个程序,输入一个字符串,输出其反转后的字符串。

```c#include <stdio.h>#include <string.h>int main() {char str[100], reversed[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = 0; i < len; i++) {reversed[i] = str[len - 1 - i];}reversed[len] = '\0';printf("反转后的字符串是:%s\n", reversed);return 0;```4. 题目四:素数判断要求:编写一个程序,输入一个正整数,判断其是否为素数。

蓝桥杯软件大赛练习系统题目

蓝桥杯软件大赛练习系统题目

历届试题 翻硬币...........................................................................................................................59 历届试题 错误票据.......................................................................................................................61 历届试题 剪格子...........................................................................................................................64 历届试题 带分数...........................................................................................................................67 历届试题 核桃的数量...................................................................................................................71
30算法训练最大最小公倍数31算法训练区间k大数查询32历届试题公式求值33历届试题九宫重排35历届试题车轮轴迹37历届试题约数倍数选卡片40历届试题农场阳光41历届试题格子刷油漆43历届试题高僧斗法45历届试题网络寻路46历届试题危险系数48历届试题幸运数50历届试题大臣的旅费52历届试题买不到的数目55历届试题连号区间数57历届试题翻硬币59历届试题错误票据61历届试题剪格子64历届试题带分数67历届试题核桃的数量71入门训练fibonacci数列时间限制
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法训练图形显示时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数):* * * * ** * * ** * ** **#include<stdio.h>int main(){int i,j,a[100][100],n;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++)for(j=0;j<n-i;j++){printf("*");if(j!=n-i-1)printf(" ");if(j==n-1-i)printf("\n");}}}算法训练排序时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。

输入格式:输入只有一行,即三个整数,中间用空格隔开。

输出格式:输出只有一行,即排序后的结果。

输入输出样例样例输入9 2 30样例输出30 9 2#include<stdio.h>#include<stdlib.h>#define num 100int main(void){int i,j,t,a[3]={0};for (i=0;i<3;i++){ scanf("%d",&a[i]);}for (i=0;i<3;i++)for (j=i;j<3;j++)if (a[i]<=a[j]){t=a[i];a[i]=a[j];a[j]=t;}for (i=0;i<3;i++){ printf("%d",a[i]);if(i!=2) printf(" ");}printf("\n");return 0;}算法训练2的次幂表示时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。

将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0现在约定幂次用括号来表示,即a^b表示为a(b)此时,137可表示为:2(7)+2(3)+2(0)进一步:7=2^2+2+2^0 (2^1用2表示)3=2+2^0所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=2^10+2^8+2^5+2+1所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)输入格式正整数(1<=n<=20000)输出格式符合约定的n的0,2表示(在表示中不能有空格)样例输入137样例输出2(2(2)+2+2(0))+2(2+2(0))+2(0)样例输入1315样例输出2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)提示用递归实现会比较简单,可以一边递归一边输出#include <stdio.h>int l=0;char temp[1000]={0};void show(int n){if(n==0) {temp[l]='0';l++;return ;}if(n==2) { temp[l]='2',l++;return ; }int a[15]={0},i=0,j;while(n!=0){a[i]=n%2;n/=2;i++;}for(j=i-1;j>=0;j--)if(a[j]==1){if(j==1){if(temp[l-1]==')' || temp[l-1]=='2' ) {temp[l]='+';l++;}temp[l]='2';l++;}else{if(temp[l-1]==')' || temp[l-1]=='2' ) {temp[l]='+';l++;}temp[l]='2';l++;temp[l]='(';l++;show(j);temp[l]=')';l++;}}}int main(){int n;scanf("%d",&n);show(n);printf("%s",temp);return 0;}算法训练前缀表达式时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。

输入格式为:“运算符对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。

要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。

输入格式:输入只有一行,即一个前缀表达式字符串。

输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。

输入输出样例样例输入+ 5 2样例输出#include<stdio.h>int main(){ int a[2];int i,j;char c=getchar();for(i=0;i<2;i++)scanf("%d",&a[i]);if(c=='+')j=a[0]+a[1];else if(c=='-')j=a[0]-a[1];else if(c=='*')j=a[0]*a[1];else if(c=='/')j=a[0]/a[1];printf("%d",j);return 0;}算法训练Anagrams问题时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。

例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。

编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。

每一个单词的长度不会超过80个字符,而且是大小写无关的。

输入格式:输入有两行,分别为两个单词。

输出格式:输出只有一个字母Y或N,分别表示Yes和No。

输入输出样例样例输入UnclearNuclear样例输出Y#include <stdio.h>void sort(char a[],int len){int i,j,max;for(i=0;i<len;i++){max=i;for(j=i+1;j<len;j++)if(a[j]>a[max]) max=j;j=a[i];a[i]=a[max];a[max]=j;}}void strtoupper(char a[],int len){int i;for(i=0;i<len;i++)if(a[i]>='a' && a[i]<='z') a[i]-=32;}int mystrcmp(char a[],int l1,char b[],int l2) {if(l1!=l2) return 0;int i;for(i=0;i<l1;i++)if(a[i]!=b[i]) return 0;return 1;}int mystrlen(char *p){int l=0;while(*p++!=0)l++;return l;}int main(){char s1[1000]={0},s2[1000]={0};int l1,l2;scanf("%s%s",s1,s2);l1=mystrlen(s1);l2=mystrlen(s2);strtoupper(s1,l1);strtoupper(s2,l2);sort(s1,l1);sort(s2,l2);if(mystrcmp(s1,l1,s2,l2)) printf("Y");else printf("N");return 0;}算法训练出现次数最多的整数时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N 也是由用户输入的,最多不会超过20。

然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。

如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。

输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。

输出格式:输出只有一行,即出现次数最多的那个元素值。

输入输出样例样例输入5100150150200250样例输出150#include <stdio.h>int main(){int n,i,j,t,max=1,num=0;scanf("%d",&n);if(n>0){int a[n];for(i=0;i<n;i++)scanf("%d",a+i);j=num=a[0];t=1;for(i=1;i<n;i++)if(a[i]==j){++t;if(t>max){max=t;num=a[i];}}else{t=1;j=a[i];}printf("%d",num);}return 0;}算法训练字串统计时间限制:1.0s 内存限制:512.0MB查看参考代码问题描述给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。

输入格式第一行一个数字L。

第二行是字符串S。

L大于0,且不超过S的长度。

输出格式一行,题目要求的字符串。

输入样例1:4bbaabbaaaaa输出样例1:bbaa输入样例2:2bbaabbaaaaa输出样例2:aa数据规模和约定n<=60S中所有字符都是小写英文字母。

相关文档
最新文档