2020 蓝桥杯 校内模拟赛(部分题解)

第一题

  问题描述

  1200000有多少个约数(只计算正约数)。

  答案提交

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

   解析:整数a除以整数b(b≠0) 除得的正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。

                                         1200000=2X2X2X2X2X2X2X3X5X5X5X5X5

                                         2:7次方

                                         3:一次方

                                         5:5次方


                                         所以有正约数:
                                       (7+1)X(1+1)X(5+1)
                                          =8X2X6
                                          =16X6
                                          =96个

   答案:96

第二题

  问题描述

  在计算机存储中,15.125GB是多少MB?

  答案提交

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

  解析:1G==1024M

  答案:15488

第三题

  问题描述

  一棵包含有2019个结点的树,最多包含多少个叶结点?

  答案提交

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

  解析:这道题博主就视为它是二叉树,一个二叉树存在奇数结点:((n-1)/2)+1,存在偶数结点:n/2

  答案:1010

第四题

  问题描述

  在1至2019中,有多少个数的数位中包含数字9?
  注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。

  答案提交

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

   解析:代码很简单,不多赘述,手算更快。

大概思路
           for (int i = 1; i <=2019; i++) {
		int a=i;
		int b = a%10;
		if(b==9){
		count++;
                }

   答案:544

第五题

问题描述

  在数列 a[1], a[2], ..., a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a[i], a[j], a[k] 为一组递增三元组,a[j]为递增三元组的中心。
  给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。

输入格式

  输入的第一行包含一个整数 n。
  第二行包含 n 个整数 a[1], a[2], ..., a[n],相邻的整数间用空格分隔,表示给定的数列。

输出格式

  输出一行包含一个整数,表示答案。

样例输入

5
1 2 5 3 5

样例输出

2

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    //竞赛专用减耗时

	int a[A],n,sum=0;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(i=0;i<n-2;i++)
	{
		for(int j=i+1;j<n-1;j++)
		{
			for(int k=j+1;k<n;k++)
			{
				if(a[i]<a[j] && a[j]<a[k])
				{
			              sum++;
				      a[j]=0;
				      break;
				}
			}
		}
	}
				cout<<sum<<endl;
				return 0;
} 

第六题

  问题描述

  一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
  给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?

  输入格式

  输入的第一行包含一个整数 n。

  输出格式

  输出一行包含一个整数,表示答案。

  样例输入

   30

  样例输出

    26

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
	int n;
        int count=0;
	cin>>n;
	for(int i=1;i<=n;++i){
		if(define1(i))
		count++;
	}
	cout<<count<<endl;
	return 0;
}
bool define1(int j){
	m = 0;
	while(j){
		a[m++]=j%10;
		j/=10;
	}
	for(int i=m-1;i>0;--i){
		if(a[i]>a[i-1])
		return false;
	}
	return true;
}
发布了2 篇原创文章 · 获赞 1 · 访问量 253

猜你喜欢

转载自blog.csdn.net/qq_41969523/article/details/104861961