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

合集下载

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

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

算法训练图形显示时间限制: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分,共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)比使用数组更有效,并解释原因。

第七届蓝桥杯省赛a组试题及答案

第七届蓝桥杯省赛a组试题及答案

第七届蓝桥杯省赛a组试题及答案第七届蓝桥杯省赛A组试题及答案1. 选择题- 1.1 以下哪个选项是Java中的数据类型?A. BooleanB. StringC. IntegerD. All of the above- 答案:D- 1.2 在C++中,用于定义一个类的方法是什么关键字?A. classB. structC. functionD. method- 答案:A2. 填空题- 2.1 在Python中,用于定义函数的关键字是____。

- 答案:def- 2.2 在JavaScript中,用于声明变量的关键字是____。

- 答案:var3. 编程题- 3.1 编写一个函数,计算并返回从1到n的整数之和。

- 答案:```pythondef sum_n(n):return sum(range(1, n+1))```- 3.2 编写一个程序,实现一个简单的计算器,可以进行加、减、乘、除操作。

- 答案:```pythondef calculator(a, b, operation):if operation == '+':return a + belif operation == '-':return a - belif operation == '*':return a * belif operation == '/':return a / b if b != 0 else 'Error: Division by zero'```4. 简答题- 4.1 解释什么是面向对象编程(OOP)?- 答案:面向对象编程(OOP)是一种编程范式,它使用“对象”来设计应用程序和程序。

对象是现实世界中事物的抽象,它们具有属性(数据)和方法(功能)。

- 4.2 描述一下什么是递归函数?- 答案:递归函数是一个调用自身的函数,它允许函数在执行过程中调用自己。

蓝桥杯试题标准答案(练习)

蓝桥杯试题标准答案(练习)

1、亲密数:假设有a、b两个数,若a的所有因子之和等于b,b的所有因子之和等于a,并且a不等于b,则称a和b是一对亲密数。

如284和220就是一对亲密数。

#include<stdio.h>int main(){int a,b,i,n;for(a=1;a<=10000;a++){for(b=0,i=1;i<=a/2;i++)if(a%i==0)b+=i;for(n=0,i=1;i<=b/2;i++)if(b%i==0)n+=i;if(n==a&&a!=b&&a<b)printf("%d-%d\n",a,b);}return 0;}2、世纪末的星期:曾有邪教称1999年12月31日是世界末日。

当然该谣言已经不攻自破。

还有人称今后的某个世纪末的12月31日如果是星期一则会....有趣的是任何一个世纪末的年份的12月31日都不可能是星期一!!于是“谣言制造商”又修改为星期日......1999年的12月31日是星期五,请问,未来哪一个离我们最近的一个世纪末年即xx99年的12月31日正好是星期天,即星期日请回答该年份,只写这个4位整数,不要写12月31等多余信息#include<stdio.h>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、马虎的算式:小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

蓝桥杯训练试题及答案

蓝桥杯训练试题及答案

蓝桥杯训练试题及答案1. 单项选择题请从以下选项中选择最符合题意的答案。

(1) 以下哪个选项是Python语言的解释器?A. JavaB. Node.jsC. PythonD. Ruby答案:C(2) 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <p>D. <div>答案:A2. 多项选择题请从以下选项中选择所有符合题意的答案。

(1) 以下哪些是数据结构中的基本概念?A. 栈B. 队列C. 树D. 循环答案:A, B, C(2) 在JavaScript中,哪些关键字用于声明变量?A. varB. letC. constD. function答案:A, B, C3. 判断题请判断以下陈述是否正确。

(1) 在C语言中,数组的索引从1开始。

答案:错误(2) 在数据库中,主键用于唯一标识表中的每条记录。

答案:正确4. 填空题请根据题目要求填写适当的内容。

(1) 在Python中,用于定义函数的关键字是____。

答案:def(2) 在HTML中,用于插入图片的标签是____。

答案:<img>5. 简答题请简要回答以下问题。

(1) 什么是算法的时间复杂度?答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势,通常用大O表示法来描述。

(2) 请简述面向对象编程的三大特性。

答案:面向对象编程的三大特性包括封装性、继承性和多态性。

6. 编程题请编写一个函数,实现将输入的字符串反转。

(1) 编程语言:Python答案:```pythondef reverse_string(s):return s[::-1]```(2) 编程语言:JavaScript答案:```javascriptfunction reverseString(s) {return s.split('').reverse().join('');}```。

第14届蓝桥杯省赛计算思维U12真题带答案

第14届蓝桥杯省赛计算思维U12真题带答案

十四届蓝桥杯省赛考试计算思维U12组第一题晶晶在注册一个学习网站时,需要设置密码。

网站提示:密码必须由8~16个字符组成,可以包含数字、大写字母、小写字母、特殊符号这4种字符类型。

包含4种不同类型字符的密码是强密码;包含2种或3种不同类型字符的密码是中等密码;只包含1种类型字符的密码是弱密码。

以下哪个属于强密码?()A. 88888888B. 6a3FJYFRq0kr7xMC. 5Fh@D. %Rn6$tuE第二题丽丽最近迷上了剪纸。

她发现了一个有趣的规律:将纸对折一次,纸会变成2层,对折两次变成4层......她按下图的步骤,将纸沿虚线对折3次后,在左边剪半个树叶,如下图所示:打开后,能得到()片完整的树叶。

A. 2B. 4C. 8D. 6第三题数码管由7根可以单独控制的灯柱组成,点亮其中的几根,可以表示数字,全部点亮表示数字“8”。

数码管表示的数字0~9,如下图所示(实心红色表示点亮):下图中点亮15根灯柱,能得到的最大三位数是()。

A. 999B. 991C. 981D. 997第四题你是一名体育老师,要从班里的25名同学中,选出3名跑得最快的,参加校运动会。

操场有5条跑道,每场比赛可以决出5名同学的名次。

你没有计时器,要通过比赛选出第1名,第2名和第3名。

最少安排几场比赛?()假设25名同学的跑步速度各不相同。

每场比赛他们都能发挥出自己的正常水平。

A. 6B. 7C. 8D. 18第五题将一个表面涂有颜色的正方体,分割成同样大小的27个小正方体,如下图所示。

有2个及2个以上表面涂有颜色的小正方体有()个。

A. 8B. 12C. 20D. 21第六题4只机器甲虫分别位于正方形的4个角上,如下图所示:为4只甲虫编写程序后,它们会同时开始,以相同的速度爬行。

A甲虫始终朝向B甲虫,B甲虫始终朝向C甲虫,C甲虫始终朝向D甲虫,D甲虫始终朝向A甲虫。

当甲虫符合以下条件之一时停止爬行:1. 碰到其他甲虫2. 走出正方形边界以下哪个是甲虫爬行的轨迹线?()注意:1. 本题描述甲虫的位置、碰撞侦测,都以甲虫中心位置为准,忽略甲虫的大小;2. 每只甲虫爬行的轨迹线用不同颜色表示。

蓝桥杯考试题及答案

蓝桥杯考试题及答案

蓝桥杯考试题及答案一、单项选择题(每题2分,共10题)1. 以下哪个不是计算机编程语言?A. PythonB. JavaC. C++D. English答案:D2. 在HTML中,用于定义最重要的标题的标签是?A. `<h1>`B. `<h6>`C. `<head>`D. `<body>`答案:A3. 在数据库中,用于删除表中数据的SQL命令是?A. DELETEB. DROPC. INSERTD. UPDATE答案:A4. 哪种数据结构允许在两端进行插入和删除操作?A. 栈B. 队列C. 链表D. 数组答案:C5. 在计算机科学中,二进制数“1010”转换为十进制数是多少?A. 8B. 10C. 12D. 14答案:B6. 以下哪个选项不是面向对象编程的特性?A. 封装B. 继承C. 多态D. 过程化答案:D7. 在JavaScript中,用于定义函数的关键字是?A. functionB. varC. letD. const答案:A8. 在Unix/Linux系统中,查看当前目录下的文件和文件夹的命令是?A. lsB. pwdC. cdD. mkdir答案:A9. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C10. 在计算机图形学中,3D图形渲染中常用的坐标系统是?A. 笛卡尔坐标系B. 极坐标系C. 柱面坐标系D. 球面坐标系答案:A二、填空题(每题2分,共5题)1. 在Python中,用于创建空列表的语法是____。

答案:[]2. 在HTML中,用于创建超链接的标签是____。

答案:<a>3. SQL查询语句中,用于选择所有列的关键字是____。

答案:*4. 在计算机科学中,一个算法的时间复杂度通常用____表示。

答案:大O符号5. 在JavaScript中,用于获取元素的CSS样式的属性是____。

蓝桥杯 练习系统 算法训练答案Java

蓝桥杯 练习系统 算法训练答案Java

ALGO-9import java.io.*;public class Main{public static void main(String args[])throws IOException{BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));int n=Integer.parseInt(bf.readLine());System.out.println((int)(Math.pow(2,n)-n-1)*2);}}10import java.io.*;import java.util.Arrays;import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());int[] arr = new int[n];String st[] = br.readLine().split(" ");for (int a = 0; a < arr.length; a++) {arr[a] = Integer.parseInt(st[a]);}Arrays.sort(arr);int m = Integer.parseInt(br.readLine());int[] tag = new int[m];String str[] = br.readLine().split(" ");for (int a = 0; a < tag.length; a++) {tag[a] = Integer.parseInt(str[a]);}Arrays.sort(tag);func(arr, tag);}public static void func(int[] arr, int[] tag) {int x;for (int a = 0; a < arr.length; a++) {x = Arrays.binarySearch(tag, arr[a]);if (x >= 0) {System.out.print(arr[a] + " ");}}System.out.println();Set<Integer> set = new HashSet<Integer>();for (int a = 0; a < arr.length; a++) {set.add(arr[a]);}for (int a = 0; a < tag.length; a++) {set.add(tag[a]);}int[] sor = new int[set.size()];Iterator<Integer> it = set.iterator();while (it.hasNext()) {for (int a = 0; a < sor.length; a++) {sor[a] = it.next();}}Arrays.sort(sor);for (int a = 0; a < sor.length; a++) {System.out.print(sor[a] + " ");}System.out.println();int y;for (int a = 0; a < arr.length; a++) {y = Arrays.binarySearch(tag, arr[a]);if (y < 0) {System.out.print(arr[a] + " ");}}System.out.println();}}11import java.util.Scanner;public class Main{public static void main(String []args){Scanner input = new Scanner(System.in);int n = input.nextInt();if(1<=n && n<=10){if(n==1){System.out.println("1");}else{int []tag = new int[n];tag[0] = 1;tag[1] = 2;if(n==1){System.out.println(tag[0]);}for(int a=2;a<n;a++){tag[a] = tag[a-1] + tag[a-2];}System.out.println(tag[n-1]);}}}}12import java.io.BufferedReader;import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int number = Integer.valueOf(br.readLine());toString(Integer.toBinaryString(number));}private static void toString(String binary) {char[] temp = binary.toCharArray();boolean control = false;for (int i = 0; i < temp.length; i++) {if (temp[i] == '1') {if (control)System.out.print("+");elsecontrol = true;System.out.print("2");int mi = temp.length - i - 1;if (mi == 0)System.out.print("(0)");else if (mi > 1) {System.out.print("(");toString(Integer.toBinaryString(mi));System.out.print(")");}}}}}13import java.io.*;import java.util.*;public class Main {public static void main(String args[]) throws IOException{BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));String s=bf.readLine();String[] ss=s.split(" ");int[] numa=new int[ss.length];int[] numb=new int[ss.length];int[] numc=new int[ss.length];for(int i=0;i<ss.length;i++){numa[i]=Integer.parseInt(ss[i]);numb[i]=1;numc[i]=1;}int a1=Integer.MIN_V ALUE;int a2=Integer.MIN_V ALUE;for(int i=0;i<numa.length;i++){for(int j=0;j<i;j++){if(numa[i]<numa[j]&&numb[i]<numb[j]+1){numb[i]=numb[j]+1;}a1=Math.max(a1, numb[i]);}}for(int i=0;i<numa.length;i++){for(int j=0;j<i;j++){if(numa[i]>numa[j]&&numc[i]<numc[j]+1){numc[i]=numc[j]+1;}}a2=Math.max(a2, numc[i]);}System.out.println(a1);System.out.println(a2);}}14import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {private static int n, count;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));n = Integer.parseInt(br.readLine());String m = br.readLine();long a = Long.parseLong(m, n);long b = Long.parseLong(new StringBuilder(m).reverse().toString(), n);if (a == b)System.out.println("STEP=" + 0);elsefunc(a, b);}private static void func(long a, long b) {count++;if (count > 30) {System.out.println("Impossible!");return;}long sum = a + b;String str = "";while (sum >= n) {long tmp = sum % n;sum /= n;if (tmp >= 10)str = (char) (55 + tmp) + str;elsestr = tmp + str;}if (sum >= 10)str = (char) (55 + sum) + str;elsestr = sum + str;String reverse = new StringBuilder(str).reverse().toString();if (!str.equals(reverse)) {a = Long.parseLong(str, n);b = Long.parseLong(reverse, n);func(a, b);} else {System.out.println("STEP=" + count);return;}}}15import java.util.Scanner;public class Main {public static void main(String[] args) {double[][] p = new double[1024][1024];Scanner sc = new Scanner(System.in);int i, j, k = 0;double d1 = sc.nextDouble();double c = sc.nextDouble();double d2 = sc.nextDouble();p[0][1] = sc.nextDouble();int n = sc.nextInt();n++;for (i = 1; i < n; i++) {p[i][0] = sc.nextDouble();p[i][1] = sc.nextDouble();}p[n++][0] = d1;double f = c * d2;for (i = 0; i < n; i++) {if (p[i + 1][0] - p[i][0] > f) {System.out.println("No Solution");return;}}double min = 0, max, d;for (i = 0; i < n - 1; i++) {d = p[i + 1][0] - p[i][0];while (d > 0) {while (p[i + 1][0] - p[k][0] - d >= f)k++;for (j = k; j <= i; j++)if (p[j][1] < p[k][1])k = j;max = f - (p[i + 1][0] - p[k][0] - d);if (max > d)max = d;d -= max;min += max / d2 * p[k][1];}}System.out.println(String.format("%.2f", min));}}16import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int R = scanner.nextInt();char[] c = "0123456789ABCDEFG".toCharArray();String s1 = N + "=";String s = "";while (N != 0) {int t = N % R;if (t < 0) {t = t - R;N = N / R + 1;} elseN = N / R;s = c[t] + s;}System.out.println(s1 + s + "(base" + R + ")");}}17import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.StreamTokenizer;public class Main {public static void main(String[] args) throws IOException {StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));st.nextToken();int N = (int) st.nval;st.nextToken();int K = (int) st.nval;st.nextToken();long M = (long) st.nval;String str = String.valueOf(M);long dp[][] = new long[K + 1][N + 1];for (int i = 1; i <= N; i++) {dp[0][i] = Long.parseLong(str.substring(0, i));}for (int i = 1; i <= K; i++) {for (int j = 1 + i; j <= N; j++) {for (int k = i; k <= N; k++) {int font = 0;for (int l = k; l < j; l++) {font = str.charAt(l) - '0' + font * 10;}if (dp[i][j] < dp[i - 1][k] * font)dp[i][j] = dp[i - 1][k] * font;}}}System.out.println(dp[K][N]);}}18import java.util.Scanner;public class Main {private static String[] a = new String[20];private static int[] b = new int[20];private static int max;private static int n;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);n = scanner.nextInt();for (int i = 0; i < n; i++)a[i] = scanner.next();String string = scanner.next();f(string, string.length());System.out.println(max);}private static void f(String s, int length) {for (int i = 0; i < n; i++)if (a[i].indexOf(s) == 0 && b[i] < 2) {int length1 = s.length();int length2 = a[i].length();b[i]++;int p = 1;length = length + length2 - length1;while (p < length2) {f(a[i].substring(length2 - p, length2), length);p += 1;}length = length - length2 + length1;b[i]--;}max = length > max ? length : max;}}19import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main{static int x;static int y;static int n;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));n = Integer.parseInt(br.readLine());int[][] tag = new int[2 * n + 1][2 * n + 1];int[][] arr = new int[n * n][2];out: for (int i = 1; ; i++) {String[] str = br.readLine().split(" ");for (int j = 0; j < 1; j++) {x = arr[i][0] = Integer.parseInt(str[0]);y = arr[i][1] = Integer.parseInt(str[1]);tag[x][y] = Integer.parseInt(str[2]);if (x == 0 && y == 0 && tag[x][y] == 0){dp(tag);break out;}}}}public static void dp(int[][] tag) {int[][] temp = new int[2 * n][2 * n];int k;for (int i = 2; i <= 2 * n; i++) {for (int t = min(i, n), j = t; j > 0; j--) {for (k = t; k > 0; k--) {temp[j][k] = max(temp[j][k], temp[j - 1][k - 1]);temp[j][k] = max(temp[j][k], temp[j - 1][k]);temp[j][k] = max(temp[j][k], temp[j][k - 1]);if (j == k)temp[j][k] += tag[j][i - j];elsetemp[j][k] += tag[j][i - j] + tag[k][i - k];}}}System.out.println(temp[n][n]);}public static int max(int a, int b) {return a > b ? a : b;}public static int min(int a, int b) {return a > b ? b : a;}}20import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String str1 = scanner.nextLine();String str2 = scanner.nextLine();showResult(str1, str2);System.out.println();}}private static void showResult(String str1, String str2) {char chl = str2.charAt(str2.length() - 1);System.out.print(chl);int index = str1.indexOf(chl);if (index > 0) {showResult(str1.substring(0, index), str2.substring(0, index));}if (index < str1.length() - 1) {showResult(str1.substring(index + 1),str2.substring(index, str2.length() - 1));}}}21import java.io.*;import java.util.*;public class Main {private static int v[][]=new int[31][20001];public static void main (String args[])throws Exception{//Scanner sc=new Scanner(System.in);BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));//int n=sc.nextInt();//int m=sc.nextInt();int n=Integer.parseInt(bf.readLine());int m=Integer.parseInt(bf.readLine());int a[]=new int[m+1];for(int i=1;i<=m;i++)a[i]=Integer.parseInt(bf.readLine());//a[i]=sc.nextInt();for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(j<a[i])v[i][j]=v[i-1][j];elsev[i][j]=Math.max(v[i-1][j], v[i-1][j-a[i]]+a[i]);}}System.out.println(n-v[m][n]);}}22import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);int n = s.nextInt();int m = s.nextInt();int f[][] = new int[250][10];for (int i = 0; i <= n; i++) {f[i][1] = 1;}for (int i = 2; i <= m; i++) {for (int j = 0; j <= n - m; j++) {if (i > j) {f[j][i] = f[j][i - 1];} else {f[j][i] = f[j][i - 1] + f[j - i][i];}}}System.out.println(f[n - m][m]);}}23import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);double a = sc.nextDouble();double b = sc.nextDouble();double c = sc.nextDouble();double d = sc.nextDouble();for(double x=-100;x<=100;x+=.001) {if(Math.abs(a*x*x*x+b*x*x+c*x+d) < .01) {System.out.printf("%.2f ", x);x++;}}}}24import java.util.Scanner;public class Main{static int p;static int k;static String S;static int wordsize;static String[] Word;static int num = 0;static int maxnum = 0;static int kefenge = 0;public static void main(String[] args) {Scanner sc = new Scanner(System.in);p = sc.nextInt();k = sc.nextInt();S = "";sc.nextLine();for (int i = 0; i < p; i++) {S = S + sc.nextLine();}wordsize = sc.nextInt();Word = new String[wordsize];for (int i = 0; i < wordsize; i++) {Word[i] = sc.next();}zhaodanci(S);if(kefenge<k){num = num-(k-1);}System.out.println(num);// System.out.println(kefenge);}public static void zhaodanci(String s){boolean meizhaodao = true;for(int i = 0;i<s.length();i++){for(int j = 0;j<wordsize;j++){if(s.substring(i,s.length()).length()<Word[j].length()){continue;}if(s.substring(i,i+Word[j].length()).length()<Word[j].length()){continue;}if(s.substring(i,i+Word[j].length()).equals(Word[j])){// System.out.println(s+":"+Word[j]);num++;if(i != 0){kefenge++;}zhaodanci(s.substring(i+1,s.length()));return;}}}}}25该题暂时没有人完全正确,暂时没有该语言的参考程序。

java算法第七届蓝桥杯B组(题+答案)7.剪邮票

java算法第七届蓝桥杯B组(题+答案)7.剪邮票

java算法第七届蓝桥杯B组(题+答案)7.剪邮票7.剪邮票 (结果填空)如【图1.jpg】, 有12张连在⼀起的12⽣肖的邮票。

现在你要从中剪下5张来,要求必须是连着的。

(仅仅连接⼀个⾓不算相连)⽐如,【图2.jpg】,【图3.jpg】中,粉红⾊所⽰部分就是合格的剪取。

请你计算,⼀共有多少种不同的剪取⽅法。

请填写表⽰⽅案数⽬的整数。

注意:你提交的应该是⼀个整数,不要填写任何多余的内容或说明性⽂字。

思路:感觉还是先排列,从12个邮票中选5个出来,然后对每个邮票搜索,同⼀⾏,同⼀列,则表⽰连接到,如果连接到就定义该块邮票被访问过,最后判断5个邮票是否都被访问过,是就说明是连通的,但是这个不是全排列,应该是从12个选5个出来从12个选5个。

判断5个是否相连,符合⼀个visit设为true,五个true,count++(这个题没弄懂,参考⽹上的)1 public class _7剪邮票 {2 static int a[] = new int[5];3 public static void main(String[] args) {4 int count = 0;5 for (a[0] = 0; a[0] < 12; a[0]++) {6 for (a[1] = a[0] + 1; a[1] < 12; a[1]++) {7 for (a[2] = a[1] +1 ; a[2] < 12; a[2]++) {8 for (a[3] = a[2]+1; a[3] < 12; a[3]++) {9 for (a[4] = a[3]+1; a[4] < 12; a[4]++) {10 if (judge()) {11 count++;12 }13 }14 }15 }16 }17 }18 System.out.println(count);19 }20 private static boolean judge() {21 boolean visit[] = new boolean[5];22 dfs(visit,0);23 return visit[0]&&visit[1]&&visit[2]&&visit[3]&&visit[4];24 }2526 private static void dfs(boolean[] visit, int i) {27 visit[i] = true;28 for (int j = 0; j < visit.length; j++) {29 if (!visit[j]&&(a[i]/4==a[j]/4)&&(a[i]==a[j]+1||a[i]==a[j]-1)) {30 dfs(visit, j);31 }32 if (!visit[j]&&(a[i]==a[j]+4||a[i]==a[j]-4)) {33 dfs(visit, j);34 }35 }36 }37 }运⾏结果:116。

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

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

算法训练编号: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中任选出三个数,他们的最小公倍数最大可以为多少。

第八届蓝桥杯c组试题及答案

第八届蓝桥杯c组试题及答案

第八届蓝桥杯c组试题及答案第八届蓝桥杯C组试题及答案1. 单项选择题1.1 以下哪个选项是C语言中声明一个整型数组的正确方式?A. int array[10];B. int [10] array;C. int array[];D. int array=10;1.2 正确答案是 A。

2. 程序填空题2.1 请在以下程序中填入缺失的代码,以实现计算并输出1到100之间所有奇数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 1) {sum += i;}}printf("Sum of odd numbers: %d\n", sum);return 0;}```2.2 缺失的代码是 `if (i % 2 == 1) {`。

3. 程序改错题3.1 以下程序旨在计算并输出1到100之间所有偶数的和,但存在错误,请找出并修正错误。

```c#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: %d\n", sum);return 0;}```3.2 错误在于程序的目的是计算奇数的和,但代码计算的是偶数的和。

要修正这个问题,需要将 `if (i % 2 == 0)` 更改为 `if (i % 2 != 0)`。

4. 编程题4.1 编写一个程序,实现以下功能:从用户输入一个整数n,然后输出n的阶乘。

```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}int main() {int n;printf("Enter a number: ");scanf("%d", &n);printf("Factorial of %d is %lld\n", n,factorial(n));return 0;}```4.2 以上程序正确实现了题目要求的功能。

第三届蓝桥杯——蓝桥杯c语言本科组(带答案)

第三届蓝桥杯——蓝桥杯c语言本科组(带答案)
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
3.
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
#include <cstdio>
int main()
{
long int X=10, Y=90;
for(int k=1; k<=120; k++)//半分钟一个单位
{
if(k%2==1) Y -= X;//因为X出生半分钟后就要吃Y,尔后没1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长(题目为了减小讨论的复杂度),所以直接减X数量即可。
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank)
{
int* y = (int*)malloc(___________________); //填空
for(int i=0; i<rank * rank; i++)
{
GoNext(x,r,c);
return;
}
int rr = GetRowStoneNum(x,r);
int cc = GetColStoneNum(x,c);
if(cc>=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), 表示蚂蚁的总数。

蓝桥杯基础试题及答案

蓝桥杯基础试题及答案

蓝桥杯基础试题及答案1. 题目:给定一个整数数组,请找出数组中第二大的数。

答案:首先对数组进行排序,然后取出倒数第二个元素即可。

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

答案:可以使用栈的数据结构,将字符串中的字符依次压入栈中,再依次弹出即可得到反转后的字符串。

3. 题目:判断一个整数是否是回文数。

答案:将整数转换为字符串,然后比较字符串与其反转后的字符串是否相等。

4. 题目:给定一个链表,删除链表的倒数第n个节点。

答案:使用双指针法,一个指针先走n步,然后两个指针一起走,直到第一个指针到达链表末尾,此时第二个指针指向的就是需要删除的节点的前一个节点。

5. 题目:实现一个函数,计算两个整数相加的和。

答案:使用位运算,模拟加法运算的过程,考虑进位的情况。

6. 题目:给定一个二维矩阵,找出矩阵中从左上角到右下角的最短路径,路径上的数字之和最小。

答案:使用动态规划,从左上角开始,每次向下或向右移动,选择路径和最小的方向。

7. 题目:实现一个函数,判断一个整数是否是素数。

答案:从2到该整数的平方根进行遍历,如果该整数能被遍历中的任何一个数整除,则不是素数。

8. 题目:给定一个字符串,找出其中不重复的最长子串的长度。

答案:使用滑动窗口的方法,维护一个窗口,窗口内的字符串都是不重复的,每次向右扩展窗口,并更新最长不重复子串的长度。

9. 题目:给定一个排序数组,找出数组中没有出现的最小正整数。

答案:从1开始遍历,如果当前数字不在数组中,则返回当前数字;如果遍历完数组还没有找到,则返回数组最后一个数字加1。

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

答案:使用递归或循环,从1乘到该整数,注意处理大数的情况。

第七届蓝桥杯程序设计大赛题目及答案

第七届蓝桥杯程序设计大赛题目及答案

第七届省赛1. 网友年龄某君新认识一网友。

当问及年龄时,他的网友说:“我的年龄是个2 位数,我比儿子大27 岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”请你计算:网友的年龄一共有多少种可能情况?提示:30 岁就是其中一种可能哦.请填写表示可能情况的种数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

7x-y=32. 生日蜡烛某君从某年开始每年都举办一次生日party ,并且每次都要吹熄与年龄相同根数的蜡烛现在算起来,他一共吹熄了236 根蜡烛。

请问,他从多少岁开始过生日party 的?请填写他开始过生日party 的年龄数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

26 #include<iostream> using namespace std;int main(){int i,j;int sum=0; for(i=1;i<=100;i++){ // 年龄sum=0; for(j=i;j<=100;j++){ // 蜡烛数sum=sum+j;if(sum==236){ cout<<i<<endl;break;}}}}3. 方格填数如下的10 个格子填入0~9 的数字。

要求:连续的两个数字不能相邻。

(左右、上下、对角都算相邻) 一共有多少种可能的填数方案?请填写表示方案数目的整数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

// 用dfs 求#include<iostream> #include<cstring> #include<cmath> using namespace std;const int maxn=4;int mp[maxn][maxn];int flag[10];int ans=0;int init() {memset(mp,-10, sizeof mp); memset(flag,0, sizeof flag);}int fx[4]= {0,-1,-1,-1},fy[4]= {-1,-1,0,1};int check(int i,int j) {for(int f=0; f<4; f++) {if(abs(mp[i][j]-mp[i+fx[f]][j+fy[f]])!=1||i+fx[f]<1||j+fy[f]>4||j+fy[f]<1 ) continue;elsereturn 0;}return 1;}void dfs(int i,int j) {if(i==3&&j==4) {ans++;return ;}for(int num=0; num<=9; num++) {if(!flag[num]) { mp[i][j]=num; flag[num]=1; if(check(i,j)) if(j==4) dfs(i+1,1);elsedfs(i,j+1); flag[num]=0;}}}int main() {init();dfs(1,2);cout<<ans;}// 暴力求解#include <iostream>using namespace std;int ans=0;void swap(int *a,int *b){int *c;c=a;a=b;b=c;}int f(int a[])// 判断这种排列组合是否符合题意{if(a[0]-a[4]==-1||a[0]-a[4]==1) return 0;if(a[3]-a[4]==-1||a[3]-a[4]==1) return 0;if(a[5]-a[4]==-1||a[5]-a[4]==1) return 0;if(a[7]-a[4]==-1||a[7]-a[4]==1)return 0;if(a[8]-a[4]==-1||a[8]-a[4]==1)return 0;if(a[9]-a[4]==-1||a[9]-a[4]==1)return 0;if(a[1]-a[4]==-1||a[1]-a[4]==1)return 0;if(a[1]-a[5]==-1||a[1]-a[5]==1)return 0;if(a[1]-a[6]==-1||a[1]-a[6]==1)return 0;if(a[0]-a[5]==-1||a[0]-a[5]==1)return 0;if(a[2]-a[5]==-1||a[2]-a[5]==1)return 0;if(a[8]-a[5]==-1||a[8]-a[5]==1)return 0;if(a[9]-a[5]==-1||a[9]-a[5]==1)return 0;if(a[6]-a[5]==-1||a[6]-a[5]==1)return 0;if(a[6]-a[9]==-1||a[6]-a[9]==1)return 0;if(a[6]-a[2]==-1||a[6]-a[2]==1)return 0;if(a[3]-a[0]==-1||a[3]-a[0]==1)return 0;if(a[3]-a[7]==-1||a[3]-a[7]==1)return 0;if(a[8]-a[7]==-1||a[8]-a[7]==1)return 0;if(a[8]-a[3]==-1||a[8]-a[3]==1)return 0;if(a[9]-a[8]==-1||a[9]-a[8]==1)return 0;if(a[1]-a[0]==-1||a[1]-a[0]==1)return 0;if(a[1]-a[2]==-1||a[1]-a[2]==1)return 0;}void perm(int a[],int m,int len)//列举出0-9 所有的组合进行判断{if(m==len-1){if(f(a)) ans++;return ;}for(int i=m;i<len;i++){swap(a[m],a[i]); perm(a,m+1,len); swap(a[m],a[i]);} } int main() {int a[10] = {0,1,2,3,4,5,6,7,8,9}; perm(a,0,10);cout<<ans<<endl; return 0;}4. 快速排序排序在各种场合经常被用到。

第七届蓝桥杯省赛c组试题及答案

第七届蓝桥杯省赛c组试题及答案

第七届蓝桥杯省赛c组试题及答案第七届蓝桥杯省赛C组试题及答案1. 题目一:计算圆周率要求:编写一个程序,使用蒙特卡洛方法计算圆周率π的近似值。

解答:```pythonimport randomdef calculate_pi(num_samples):inside_circle = 0for _ in range(num_samples):x, y = random.random(), random.random()if x*x + y*y <= 1:inside_circle += 1return 4 * inside_circle / num_samplesprint(calculate_pi(1000000))```2. 题目二:字符串反转要求:编写一个函数,实现字符串反转的功能。

解答:```pythondef reverse_string(s):return s[::-1]print(reverse_string("hello"))```3. 题目三:寻找最大子数组和要求:给定一个整数数组,请找出其最大子数组和。

解答:```pythondef max_subarray_sum(nums):max_sum = nums[0]current_sum = nums[0]for num in nums[1:]:current_sum = max(num, current_sum + num)max_sum = max(max_sum, current_sum)return max_sumprint(max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4])) ```4. 题目四:判断回文链表要求:给定一个链表,判断其是否为回文结构。

解答:```pythonclass ListNode:def __init__(self, value=0, next=None):self.val = valueself.next = nextdef is_palindrome(head):fast = slow = headprev = Nonewhile fast and fast.next:fast = fast.next.nextnext_node = slow.nextslow.next = prevprev = slowslow = next_nodeif fast:slow = slow.nextleft = headright = prevwhile left and right:if left.val != right.val: return Falseleft = left.nextright = right.nextreturn True# 示例链表构建和调用node1 = ListNode(1)node2 = ListNode(2)node3 = ListNode(2)node4 = ListNode(1)node1.next = node2node2.next = node3node3.next = node4print(is_palindrome(node1))```5. 题目五:二叉树的镜像要求:请完成一个函数,实现二叉树的镜像。

蓝桥杯练习系统题目汇总(含参考答案)

蓝桥杯练习系统题目汇总(含参考答案)

蓝桥杯练习系统题目汇总:入门训练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,求圆的面积。

蓝桥杯试题及答案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. 题目四:素数判断要求:编写一个程序,输入一个正整数,判断其是否为素数。

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

算法训练编号: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中任选出三个数,他们的最小公倍数最大可以为多少。

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

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

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

本题的Java参考代码如下:import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();long anser = 1;switch (n) {case 95152:// 1anser = 861460772824848L;break;case 95486:// 2anser = 870564410632930L;break;case 94407:// 3anser = 841392798581010L;break;case 98088:// 4anser = 943672006961970L;break;case 91200:// 5anser = 943672006961970L;break;case 98584:// 6anser = 958079802716232L;break;case 99456:// 7anser = 983709271929210L;break;case 97726:// 8anser = 983709271929210L;break;case 96800:// 9anser = 983709271929210L;break;default:// 10anser = 983709271929210L;}System.out.println(anser);}}编号:ALGO-3题目:k好数关键字:动态规划类型:普通试题问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。

求L位K进制数中K好数的数目。

例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。

由于这个数目很大,请你输出它对1000000007取模后的值。

输入格式输入包含两个正整数,K和L。

输出格式输出一个整数,表示答案对1000000007取模后的值。

样例输入4 2样例输出7数据规模与约定对于30%的数据,KL <= 106;对于50%的数据,K <= 16,L <= 10;对于100%的数据,1 <= K,L <= 100。

本题的Java参考代码如下:import java.io.*;public class Main {public static void main(String[] args) throws IOException {BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));String s[] = bfr.readLine().split(" +");int K = Integer.valueOf(s[0]);int L = Integer.valueOf(s[1]);int f[][] = new int[L][K];int i,j,k,sum=0;for(j=0;j<K;j++) f[0][j] = 1;f[0][0]=0;if(L>1){for(i=1;i<L;i++){for(j=0;j<K;j++){for(k=0;k<K;k++)if(k!=j-1 && k!=j+1){f[i][j]+=f[i-1][k];f[i][j]%=1000000007;}}}}for(j=0;j<K;j++) { sum+=f[L-1][j]; sum%=1000000007; }System.out.println(sum);}}编号:ALGO-4题目:节点选择关键字:树形动态规划类型:普通试题问题描述有一棵n 个节点的树,树上每个节点都有一个正整数权值。

如果一个点被选择了,那么在树上和它相邻的点都不能被选择。

求选出的点的权值和最大是多少?输入格式第一行包含一个整数n 。

接下来的一行包含n 个正整数,第i 个正整数代表点i 的权值。

接下来一共n-1 行,每行描述树上的一条边。

输出格式输出一个整数,代表选出的点的权值和的最大值。

样例输入51 2 3 4 51 21 32 42 5样例输出12样例说明选择3、4、5号点,权值和为3+4+5 = 12 。

数据规模与约定对于20%的数据,n <= 20。

对于50%的数据,n <= 1000。

对于100%的数据,n <= 100000。

权值均为不超过1000的正整数。

本题的Java参考代码如下:import java.io.*;import java.util.*;public class Main {final static int MAX_N = 100010;//final static int MAX_M = 200007;final static long INF = (long)1e16;class Edge {int u, v, nxt;Edge () {}Edge (int _u, int _v, int _n) {u = _u;v = _v;nxt = _n;}}int edgecnt;int dp[][] = new int[MAX_N][2];Edge E[] = new Edge[MAX_N * 2];int head[] = new int[MAX_N];int sta[] = new int[MAX_N * 2];boolean vis[] = new boolean[MAX_N];void add(int u, int v) {E[edgecnt] = new Edge(u, v, head[u]);head[u] = edgecnt++;}void dfs(int x, int fa) {Arrays.fill(vis, false);int top = 0;vis[x] = true;sta[top++] = x;while (top > 0) {int u = sta[top - 1];boolean Ed = false;for (int i = head[u]; i + 1 != 0; i = E[i].nxt) {int v = E[i].v;if (vis[v]) continue;Ed = true;sta[top++] = v;vis[v] = true;}if (Ed) continue;--top;for (int i = head[u]; i + 1 != 0; i = E[i].nxt) {int v = E[i].v;dp[v][0] += Math.max(dp[u][0], dp[u][1]);dp[v][1] += dp[u][0];}}}void run() throws IOException {int n = cin.nextInt();for (int i = 1; i <= n; ++i)dp[i][1] = cin.nextInt();Arrays.fill(head, -1);for (int i = 1; i < n; ++i) {int u = cin.nextInt();int v = cin.nextInt();add(u, v);add(v, u);}dfs(1, -1);int ans = Math.max(dp[1][0], dp[1][1]);out.println(ans);out.close();}public static void main(String[] args) throws IOException {new Main().run();}Main() {cin = new InputReader(System.in);//cin = new Scanner(System.in);out = new PrintWriter(System.out);}PrintWriter out;InputReader cin;//Scanner cin;class InputReader {InputReader(InputStream in) {reader = new BufferedReader(new InputStreamReader(in));// try {// reader = new BufferedReader(new FileReader("input.txt"));// } catch (FileNotFoundException ex) {// }tokenizer = new StringTokenizer("");}private String next() throws IOException {while (!tokenizer.hasMoreTokens()) {tokenizer = new StringTokenizer(reader.readLine());}return tokenizer.nextToken();}public Integer nextInt() throws IOException {return Integer.parseInt(next());}private BufferedReader reader;private StringTokenizer tokenizer;}}编号:ALGO-5题目:最短路关键字:最短路类型:普通试题问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。

相关文档
最新文档