第11届蓝桥杯本科组校赛

1.问题描述

请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

十六进制转十进制
6473

2.问题描述

两个二进制数11110011101和1111101001的和是多少?请用二进制表示,注意在提交的时候不要提交前导0。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个二进制数,在提交答案时只填写这个二进制数,填写多余的内容将无法得分。

二进制加法
101110000110

3.问题描述

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

全排列
2520

4.问题描述

在2019个有区别的球中选3个球放在一个盘子里,请问有多少种选法?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

排列组合
1369657969

5.问题描述

小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。
  给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。
  元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入格式
  输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
  输出答案,或者为yes,或者为no。
样例输入
lanqiao
样例输出
yes
样例输入
world
样例输出
no
评测用例规模与约定
  对于所有评测用例,单词中的字母个数不超过100。

//[辅音][元音][辅音][元音]
#include <bits/stdc++.h> 
using namespace std;
int main()
{
	set<char>f;set<char>y;
	for(int i='a';i<='z';i++)
	{
		if(i=='a'||i=='e'||i=='i'||i=='o'||i=='u')
		{
			y.insert(i);
		}
		else
		{
			f.insert(i);
		}
	}
	string s;
	cin>>s;int p=0;int aa=0,bb=0,cc=0,dd=0;
	while(f.find(s[p])!=f.end())
	{
		aa=1;
		p++;
	}
	while(y.find(s[p])!=y.end())
	{
		bb=1;
		p++;
	}
	while(f.find(s[p])!=f.end())
	{
		cc=1;
		p++;
	}
	while(y.find(s[p])!=y.end())
	{
		dd=1;
		p++;
	}
	if(p==s.length()&&aa==1&&bb==1&&cc==1&&dd==1)cout<<"yes"<<endl;
	else cout<<"no"<<endl;
	return 0;
}

6.问题描述

给定两个正整数 n 和 m,请问在整数 1 至 n 中,各位数字的平方和为 m 的总共有多少个?
  例如,当 n=100,m=5 时,只有 12 和 21 各位数字的平方之和为 5,所以答案为 2。
输入格式
  输入的第一行包含两个整数 n 和 m,用一个空格分隔。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
100 5
样例输出
2
评测用例规模与约定
  对于 40% 的评测用例,1 <= n <= 1000,1 <= m <= 1000。
  对于所有评测用例,1 <= n <= 1000000,1 <= m <= 1000。

#include <bits/stdc++.h> 
using namespace std;
int main()
{
	int n,m,num=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		int a=i,r=0;
		while(a)
		{
			r+=(a%10)*(a%10);
			a/=10;
		}
		if(r==m)num++;
	}
	cout<<num<<endl;
	return 0;
}

7.问题描述

给定三个整数 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 <bits/stdc++.h> 
using namespace std;
int main()
{
	int n,a,b,c,num=0;
	cin>>n>>a>>b>>c;
	for(int i=1;i<=n;i++)
	{
		if((i%a!=0)&&(i%b!=0)&&(i%c!=0))
		{
			num++;
		}
	}
	cout<<num<<endl;
	return 0;
}

8.问题描述

对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
  例如,一个 4 行 5 列的螺旋矩阵如下:
  1 2 3 4 5
  14 15 16 17 6
  13 20 19 18 7
  12 11 10 9 8
输入格式
  输入的第一行包含两个整数 n, m,分别表示螺旋矩阵的行数和列数。
  第二行包含两个整数 r, c,表示要求的行号和列号。
输出格式
  输出一个整数,表示螺旋矩阵中第 r 行第 c 列的元素的值。
样例输入
4 5
2 2
样例输出
15
评测用例规模与约定
  对于 30% 的评测用例,2 <= n, m <= 20。
  对于 70% 的评测用例,2 <= n, m <= 100。
  对于所有评测用例,2 <= n, m <= 1000,1 <= r <= n,1 <= c <= m。

#include <bits/stdc++.h> 
using namespace std;
int main() {
	int m, n, t = 0;
	cin>>m>>n;
	vector<int> a(m*n);
	for (int i = 1; i <= m*n; i++)
		a[i-1]=i;
	vector<vector<int> > b(m, vector<int>(n));
	int level = m / 2 + m % 2;
	for (int i = 0; i < level; i++) 
	{
		for (int j = i; j <= n - 1 - i && t <= m*n - 1; j++)
			b[i][j] = a[t++];
		for (int j = i + 1; j <= m - 2 - i && t <= m*n - 1; j++)
			b[j][n - 1 - i] = a[t++];
		for (int j = n - i - 1; j >= i && t <= m*n - 1; j--)
			b[m - 1 - i][j] = a[t++];
		for (int j = m - 2 - i; j >= i + 1 && t <= m*n - 1; j--)
			b[j][i] = a[t++];
	}
	int xx,yy;
	cin>>xx>>yy;
	cout<<b[xx-1][yy-1]<<endl;
	return 0;
}

9.求符合要求序列的个数:

  1. 第一个数为正整数n
  2. 第二个数为小于等于n的正整数
  3. 从第三位数开始,每一位数为小于前两位的差的绝对值的正整数

输入格式
  输入一行包含一个整数 n。
输出格式
  输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
样例输入
4
样例输出
7
样例说明
  以下是满足条件的序列:
  4 1
  4 1 1
  4 1 2
  4 2
  4 2 1
  4 3
  4 4
评测用例规模与约定
  对于 20% 的评测用例,1 <= n <= 5;
  对于 50% 的评测用例,1 <= n <= 10;
  对于 80% 的评测用例,1 <= n <= 100;
  对于所有评测用例,1 <= n <= 1000。

//dfs
#include <bits/stdc++.h> 
using namespace std;
int num=0;void dfs(vector<int>v,int a,int b);
void f(vector<int>v,int i,int n)
{
	num++;
	num=num%10000; 
	v.push_back(i);
	if(abs(n-i)>1) 
		dfs(v,n,i);
}
void dfs(vector<int>v,int a,int b)
{
	int c=abs(a-b);
	for(int i=1;i<c;i++)
	{
		f(v,i,b);
	}
}
int main() 
{
	int n;
	cin>>n;
	vector<int>v;
	v.push_back(n);
	for(int i=1;i<=n;i++)
		f(v,i,n);
	cout<<num;
	return 0;
}

10.问题描述

受大西线调水工程启发,小明也准备设计一条调水的水渠。
  小明经费有限,他只能在一块有限区域内建立一条简单的水渠。
  小明首先勘探了地形,在这块地中有一处水源,必须用作水渠的起点。另外,小明还测量了一些点,包括点的位置和高度。如果两个小明测量的点之间的距离不超过 d 且高度不同,小明就可以在这两点之间建立一段水渠,让水从高处流向低处,这一段的长度为两点之间的直线距离(即将横坐标的差的平方加上纵坐标的差的平方加上高度差的平方后再开平方根)。
  小明计划只修一条主水渠,不建立分支的水渠。由于水渠能影响的范围与水渠的长度正相关,小明希望水渠尽可能长。
  请注意,水渠必须从水源开始修,并且高度应当递减。水渠的不同段可能交叉(建个桥即可)。
输入格式
  输入的第一行包含一个整数 n ,表示小明已经测量的点数。
  接下来 n 行,每行三个整数 x, y, h,分别表示测量的点坐标为 (x, y),高度为 h。这部分的第一个点即为水源,第一个点的h值大于其他点的h值。
  接下来一行包含一个整数 d。
输出格式
  输出一行,包含一个实数,四舍五入保留 2 位小数,表示水渠最长能修多长。
样例输入
5
1 1 10
2 3 8
4 5 9
1 2 5
4 5 5
8
样例输出
10.66
样例说明
  在这些点中有两个坐标为 (4, 5) 的点,这是允许的。
评测用例规模与约定
  对于 30% 的评测用例,1 <= n <= 10;
  对于 60% 的评测用例,1 <= n <= 20;
  对于所有评测用例,1 <= n <= 1000,0 <= h <= 10000,0 <= x, y <= 10000,0 < d < 1e7(10的7次方)。

//dfs
#include <bits/stdc++.h> 
using namespace std;
int n;double d;
struct s{
	double x,y,h;
};
s ss[1001];
double ma=0;
int c(s a,s b)
{
	return a.h>b.h;
} 
void f(int a,double sum,double hh)
{
	//cout<<a<<" "<<sum<<" "<<hh<<endl;
	if(sum>ma)ma=sum;
	for(int i=a+1;i<n;i++)
	{
		if(ss[i].h<ss[a].h)
		{
			double y=sqrt((ss[a].x-ss[i].x)*(ss[a].x-ss[i].x)+(ss[a].y-ss[i].y)*(ss[a].y-ss[i].y));
			double x=sqrt((ss[a].x-ss[i].x)*(ss[a].x-ss[i].x)+(ss[a].y-ss[i].y)*(ss[a].y-ss[i].y)+(ss[a].h-ss[i].h)*(ss[a].h-ss[i].h));
			if(x<=d)
			{
				f(i,sum+y,ss[i].h);
			}
		}
	}
}
int main() 
{

	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>ss[i].x>>ss[i].y>>ss[i].h;
	}
	sort(ss,ss+n,c);
	//cout<<ss[0].h<<endl;
	cin>>d;
	
	//for(int i=0;i<n;i++)
	//{
		f(0,0,ss[0].h);
	//}
	printf("%.2lf\n",ma);
	return 0;
}

发布了73 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/l503301397/article/details/103223617