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

合集下载

蓝桥杯练习题库 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查看参考代码问题描述在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。

2016蓝桥杯C语言算法题

2016蓝桥杯C语言算法题
输入格式:输入为一个字符串,每个字符都是’0’或’1’,字符串的长度不超过32。
输出格式:输出一个整数。
输入输出样例
样例输入
1101
样例输出
13
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#define MaxSize 32
void print2Return10(char str[])
}
main()
{
int n;
scanf("%d",&n);
getResult(n);
printf("\n");
return 0;
}
/*
算法训练 薪水计算
问题描述
编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在40 到50 个小时之间,那么对于前40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按1.5 倍计算。如果员工工作的时间超过了50 个小时,那么对于前40 个小时,仍按常规方法计算;对于40~50 个小时之间的部分,每小时的薪水按1.5 倍计算;而对于超出50 个小时的部分,每小时的薪水按2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。
gets(str);
print2Return10(str);
return 0;
}
/*
算法训练 数位分离
问题描述
编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。

蓝桥杯练习题库 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。

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

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

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), 表示蚂蚁的总数。

第三届蓝桥杯(高职java预赛题及参考答案)

第三届蓝桥杯(高职java预赛题及参考答案)

1、造成高房价的原因有许多,比如土地出让价格。

既然地价高,土地的面积必须仔细计算。

遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。

一般需要把它划分为多个三角形来计算。

已知三边求三角形的面积需要用海伦定理,参见【2.jpg】各条边长数据如下:AB = 52.1BC = 57.2CD = 43.5DE = 51.9EA = 33.4EB = 68.2EC = 71.9根据这些数据求五边形地块的面积。

四舍五入到小数后两位。

只写结果,不要源代码!1.jpg2.jpgpublic class Onea {public static void main(String args[]){double s_ABE = (52.1 + 68.2 + 33.4) / 2;double s_BEC = (68.2 + 57.2 + 71.9) / 2;double s_EDC = (71.9 + 51.9 + 43.5) / 2;// sqrt()是Math中的静态方法可以用类名直接调用double A_ABE = Math.sqrt(s_ABE * (s_ABE - 52.1) * (s_ABE - 33.4) * (s_ABE - 68.2));double A_BEC = Math.sqrt(s_BEC * (s_BEC - 68.2) * (s_BEC - 57.2) * (s_BEC - 71.9));double A_EDC = Math.sqrt(s_EDC * (s_EDC - 71.9) * (s_EDC - 43.5) * (s_EDC - 51.9));System.out.println(A_ABE + A_BEC + A_EDC);}}// 输出的结果是3789.8640994485186public class One {public static void main(String[] args) {double AB = 52.1, BC = 57.2, CD = 43.5, DE = 51.9, EA = 33.4, EB = 68.2, EC = 71.9;System.out.println(mainji(AB,EB,EA) + mainji(EB,BC,EC) +mainji(EC,CD,DE));}static double mainji(double a,double b,double c){double s = (a + b + c)/2;return Math.sqrt(s * (s - a) * (s - b) * (s - c));}}输出结果:3789.86409944851862、今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题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. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。

蓝桥杯练习题库 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查看参考代码问题描述在一个有限的正整数序列中,有些数会多次重复出现在这个序列中。

蓝桥杯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('');}```。

蓝桥杯练习题库-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。

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

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

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运行这个算法。

第三届蓝桥杯预赛真题趣味算式C++

第三届蓝桥杯预赛真题趣味算式C++

第三届蓝桥杯预赛真题趣味算式java本科第九题C++实现匪警请拨110,即使手机欠费也可拨通!为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!某批警察叔叔正在进行智力训练:1 2 3 4 5 6 7 8 9 = 110;请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。

之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。

请你利用计算机的优势,帮助警察叔叔快速找到所有答案。

每个答案占一行。

形如:12+34+56+7-8+9123+4+5+67-89......已知的两个答案可以输出,但不计分。

各个答案的前后顺序不重要。

注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

请不要使用package语句。

源程序中只能出现JDK1.5中允许的语法或调用。

不能使用1.6或更高版本。

#include<iostream>char b[10];int x=0;using namespace std;void fun(int j){int y=j;y++;if(y==10){int s[9]={1,2,3,4,5,6,7,8,9};int z=0;for(int o=2;o<10;o++){if(b[o]=='*'){z++;if(z>1){s[o-3]=s[o-3]*10;z--;}s[o-2]=s[o-2]*10;if(b[o-1]=='-'){s[o-1]=0-s[o-1];}}if(b[o]=='+'){s[o-1]=s[o-1];z=0;}if(b[o]=='-'){s[o-1]=0-s[o-1];z=0;}}int sum2=0;for(int o=0;o<9;o++){sum2+=s[o];}//cout<<sum2<<"\t";if(sum2==110){x++;for(int o=0;o<9;o++){cout<<s[o]<<"\t";}cout<<x<<endl;}}if(y<10){b[y]='*';fun(y);b[y]='+';fun(y);b[y]='-';fun(y);}}int main(){int sum=1,j=1;fun(j);return 0;}。

蓝桥杯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树在编码中有着广泛的应用。

第三届蓝桥杯预赛真题趣味算式C++

第三届蓝桥杯预赛真题趣味算式C++

第三届蓝桥杯预赛真题趣味算式java本科第九题C++实现匪警请拨110,即使手机欠费也可拨通!为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训练和智力训练!某批警察叔叔正在进行智力训练:1 2 3 4 5 6 7 8 9 = 110;请看上边的算式,为了使等式成立,需要在数字间填入加号或者减号(可以不填,但不能填入其它符号)。

之间没有填入符号的数字组合成一个数,例如:12+34+56+7-8+9 就是一种合格的填法;123+4+5+67-89 是另一个可能的答案。

请你利用计算机的优势,帮助警察叔叔快速找到所有答案。

每个答案占一行。

形如:12+34+56+7-8+9123+4+5+67-89......已知的两个答案可以输出,但不计分。

各个答案的前后顺序不重要。

注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

请不要使用package语句。

源程序中只能出现JDK1.5中允许的语法或调用。

不能使用1.6或更高版本。

#include<iostream>char b[10];int x=0;using namespace std;void fun(int j){int y=j;y++;if(y==10){int s[9]={1,2,3,4,5,6,7,8,9};int z=0;for(int o=2;o<10;o++){if(b[o]=='*'){z++;if(z>1){s[o-3]=s[o-3]*10;z--;}s[o-2]=s[o-2]*10;if(b[o-1]=='-'){s[o-1]=0-s[o-1];}}if(b[o]=='+'){s[o-1]=s[o-1];z=0;}if(b[o]=='-'){s[o-1]=0-s[o-1];z=0;}}int sum2=0;for(int o=0;o<9;o++){sum2+=s[o];}//cout<<sum2<<"\t";if(sum2==110){x++;for(int o=0;o<9;o++){cout<<s[o]<<"\t";}cout<<x<<endl;}}if(y<10){b[y]='*';fun(y);b[y]='+';fun(y);b[y]='-';fun(y);}}int main(){int sum=1,j=1;fun(j);return 0;}。

第七届蓝桥杯省赛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,求圆的面积。

蓝桥杯等级考试题库

蓝桥杯等级考试题库

蓝桥杯等级考试题库题目1:请解释什么是二分查找算法,并简要说明其应用场景。

答案1:二分查找算法是一种在有序数组中查找指定元素的算法,它通过不断将数组分成两半来缩小查找范围,直到找到目标元素或确定元素不存在。

二分查找算法的时间复杂度为O(logn),适用于数据量较大且已排序的场景,如数据库索引、二分搜索树等。

题目2:什么是图的遍历?请举例说明深度优先搜索(DFS)和广度优先搜索(BFS)的区别。

答案2:图的遍历是指沿着图中的边访问所有节点的过程。

深度优先搜索(DFS)和广度优先搜索(BFS)是两种常见的图遍历算法。

DFS采用栈的数据结构,沿着一条路径尽可能深地搜索,直到达到目标节点或无法继续搜索为止;而BFS采用队列的数据结构,按照层次顺序逐层遍历节点。

两种算法的时间复杂度均为O(n+m),其中n为节点数,m为边数。

题目3:请简要说明什么是动态规划,并举例说明其应用场景。

答案3:动态规划是一种通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。

动态规划通常用于求解最优化问题,如背包问题、最长公共子序列等。

动态规划的基本思想是将问题的解保存下来,避免重复计算,从而提高算法效率。

题目4:请解释什么是哈希表,并简要说明其特点和应用场景。

答案4:哈希表是一种根据键(key)直接访问值(value)的数据结构,它通过哈希函数将键映射到一个位置,然后在该位置存储对应的值。

哈希表的特点包括插入、删除和查找操作的时间复杂度接近O(1),但需要解决哈希冲突问题。

哈希表的应用场景包括缓存、字典、关联数组等。

题目5:请简要说明什么是堆(Heap),并举例说明其应用场景。

答案5:堆是一种特殊的树形数据结构,它满足堆属性:父节点的值大于或等于其子节点的值(最大堆),或者父节点的值小于或等于其子节点的值(最小堆)。

堆通常用于实现优先队列,例如任务调度、Dijkstra算法等。

堆的时间复杂度为O(logn),其中n为节点数。

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

Java本科蓝桥杯比赛试题,算法练习

Java本科蓝桥杯比赛试题,算法练习

1.黄金分割数0.618与美学有重要的关系。

舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子...黄金分割数是个无理数,也就是无法表示为两个整数的比值。

0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034 有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。

它后面的每一个项都是前边两项的和。

如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。

请写出该比值。

格式是:分子/分母。

比如:29/472.有一群海盗(不多于20人),在船上比拼酒量。

过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。

再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。

当第4瓶酒平分喝下后,大家都倒下了。

等船长醒来,发现海盗船搁浅了。

他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。

如果有多个可能的答案,请列出所有答案,每个答案占一行。

格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0public class Test_2 {public static void main(String[] args) {for(int i=1; i<=16; i++)for(int j=1; j<=15; j++)for(int k=1; k<=14; k++)for(int l=1; l<=13; l++){int sum = i + j + k + l;if(sum <= 20 && 1.0/sum + 1.0/(sum-i) + 1.0/(sum-i-j) + 1.0/(sum-i-j-k) == 1.0)System.out.println(sum+","+(sum-i)+","+(sum-i-j)+","+l);}}}3.汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。

  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中所有字符都是小写英文字母。

相关文档
最新文档