蓝桥杯省赛模拟试题1——填空题+大题前两题(简单基础题)

题目一

问题描述
  将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。
  请问,总共能排列如多少个不同的单词。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

我的答案为5040❌

解析:第一个空有七种可能,第二个空有六种可能,以此类推故是7的阶乘5040,但由于本题中A出现了两次,故正确答案应该为A77/A22=5040/2=2520

扩展:需要“取出元素”和“对取出元素按一定顺序排成一列”两个过程的是Amn,有重复的地方要除去;
仅仅取出元素的是Cmn;

题目二

问题描述
  在计算机存储中,12.5MB是多少字节?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案为  13107200√	

解析:1MB = 1024KB,1KB = 1024B,1kb为1024个字节
所以12.5MB = 12.5 * 1024 * 1024 = 12800KB * 1024 = 13107200 B

题目三

问题描述
  由1对括号,可以组成一种合法括号序列:()。
  由2对括号,可以组成两种合法括号序列:()()、(())。
  由4对括号组成的合法括号序列一共有多少种?
答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案为  14√	

解析:可以编程序用函数实现遍历,若右括号数大于左括号数或者左括号数大于n就算遍历失败,函数返回,否则即时遍历成功,全局变量m加一统计

#include
int m=0;
work(int n,int k,int a[]){
	int i,s=0,h=0; 
	if(k<n){
		a[k]=2;//2代表左括号,1代表右括号 
		work(n,k+1,a);
		a[k]=1;
		work(n,k+1,a);
	}
	else {
		
		for(i=0;i<n;i++){
			printf("%d ",a[i]);
			if(a[i]==2)	s++;
			else if(a[i]==1) h++;
			
			if((h>s)||(s>n/2)){
				printf("失败\n");
				return 0;//若右括号数目多于左括号,则失败
			}
				 
		}
		printf("\n");
		m++;//如果运行完全程都没有返回,则合法情况加一 
	}
	return 0; 
	
	
}
int main(){
	int i,j,k;
	int a[200];
	int n;
	printf("请输入括号对数:"); 
	scanf("%d",&n);
	n=n*2;
	work(n,0,a);
	printf("%d",m);
	return 0;
} 

注释
本代码加了调试的部分在里面,可以更加清晰直观的查看遍历的结果以及失败的地方

题目四

一个包含有2019个结点的无向连通图,最少包含多少条边?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案为 2018√	

解析:无向连通图最少包含n-1条边,最多包含 n(n-1)/2条边。
强连通图(有向图)(任意两个顶点都是相互可达)最少包含n条边,最多包含n(n-1)条边

题目五

问题描述
  给定三个整数 a, b, c,
如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。
  请问在 1 至 n 中有多少个反倍数。
输入格式
  输入的第一行包含一个整数 n。
  第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
30
2 3 6
样例输出
10
样例说明
  以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。
评测用例规模与约定
  对于 40% 的评测用例,1 <= n <= 10000。
  对于 80% 的评测用例,1 <= n <= 100000。
  对于所有评测用例,1 <= n <= 1000000,1 <= a <= n,1 <= b <= n,1 <= c <= n。

#include
int main(){
	int n,a,b,c,i,k=0;
	scanf("%d",&n);
	scanf("%d%d%d",&a,&b,&c);
	for(i=1;i<=n;i++){
		if((i%a!=0)&&(i%b!=0)&&(i%c!=0))
			k++;
	}
	printf("%d",k);
	return 0;
} 

题目六

问题描述
给定一个单词,请使用凯撒密码将这个单词加密。
  凯撒密码是一种替换加密的技术,
单词中的所有字母都在字母表上向后偏移3位后被替换成密文。
即a变为d,b变为e,…,w变为z,x变为a,y变为b,z变为c。
  例如,lanqiao会变成odqtldr。
输入格式
  输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
  输出一行,表示加密后的密文。
样例输入
lanqiao
样例输出
odqtldr
评测用例规模与约定
  对于所有评测用例,单词中的字母个数不超过100。
代码块

#include
#include
int main(){
	int i,n;
	char a[100],b[100];
	scanf("%s",a);
	n=strlen(a);
	for(i=0;i<n;i++){
		if(a[i]<'x')
			b[i]=a[i]+3;
		else if(a[i]=='x')
			b[i]='a';
		else if(a[i]=='y')
			b[i]='b';
		else if(a[i]=='z')
			b[i]='c';
		
	}
	printf("%s",b);
	return 0;
}

你可能感兴趣的:(蓝桥杯试题练习——比赛试题)