蓝桥杯 题库 简单 每日十题 day6

在这里插入图片描述

01 删除字符

题目描述
给定一个单词,请问在单词中删除t个字母后,能得到的字典序最小的单词是什么?
输入描述
输入的第一行包含一个单词,由大写英文字母组成。
第二行包含一个正整数t。
其中,单词长度不超过100,t小于单词长度。
输出描述
输出一个单词,表示答案。
输入输出样例
示例1
输入

LANQIAO
3

输出

AIAO
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
  char str1[105];
  int n;
  scanf("%s",str1);
  scanf("%d",&n);
  int len = strlen(str1);
  int top = -1;
  char str2[105] = {0};
  for (int i = 0; i < len; i++) {
        while (top >= 0 && str2[top] > str1[i] && n) {
            top --;
            n --;
        }
        str2[++top] = str1[i];
    }
    top -= n;
    printf("%s",str2);
  return 0;
}

02 最大降雨量

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的49张法术符,上面分别写着1至49这49个数字。
法术一共持续7周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7张法术符上数字的中位数。
法术施展完7周后,求雨将获得成功,降雨量为7周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多
少?

#include<stdio.h>
int main()
{
  //分析,我们先理解题意,我们如果假设每周的中位数是a,b,c,x,e,f,g,这七个数是这七张
  //法术符数字上的中位数(即为能量)。降雨量为这七个数的中位数,我们要的是x最大,假设这此时x最大,我们可以看看需要满足什么条件。
  //七个数从小到大排列 第四周x后三天要比x大,第五周第六周第七周的后四天都要比x大,所以共要有15个数比x大。
  //所以x最大为34;
  printf("34");
  return 0;
}

03 分数

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int x,y;
  x=pow(2,20)-1;
  y=pow(2,19);
  printf("%d/%d",x,y);
  return 0;
}

04 鲁卡斯队列

在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
  float a = 1,b = 3,c = 0;
  float n = 0;
  while(1){
    n = a/b;
    if((n>=0.6180335)&&(n<=0.6180344))
      break;
    c = a + b;
    a = b;
    b = c;
  }
  cout<<a<<'/'<<b;;
  return 0;
}

05 公约数

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果整数a是整数b的整数倍,则称b是a的约数。请问,有多少个正整数既是2020的约数,又是3030的约数。

#include <iostream>
using namespace std;
int main()
{
    int count=0;
    for(int i=1;i<=1010;i++){
        if(2020%i==0&&3030%i==0) count++;
    } 
    printf("%d",count);
  // 请在此输入您的代码
  return 0;
}

06 求和

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明对数位中含有2、0、1、9的数字很感兴趣,
在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。
请问,在1到2019中,所有这样的数的和是多少?

#include <iostream>
using namespace std;
bool yes(int num){
  while(num > 0){
    if(num % 10 == 2 || num % 10 == 0 || num % 10 == 1 || num % 10 == 9) return true;
    num /= 10;
  }
  return false;
}

int main()
{
  // 请在此输入您的代码
  int sum = 0;
  for(int i = 1; i <= 2019; ++i){
    if(yes(i)) sum += i;
  }
  cout << sum;
  return 0;
}

07 字母数

问题描述
请找到一个大于2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导0)都为字母(A到F)。请将这个数的十进制形式作为答案提交。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

#include<bits/stdc++.h>
using namespace std;
int i=2023;
bool haileo(int x)
{
while(x!=0)
  {
    if(x%16<10)
      return 0;
    x/=16;
  }
return 1;
}
int main()
{
while(1)
  {
    if(haileo(i))
      break;
    i++;
  }
printf("%d",i);
return 0;
}

08 星期计算

在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
  int n=6,s=1;
  for(int i=1;i<=22;i++)
  {
    s*=20;
  }
  if(s%7+n-7>0)
  cout<<(s%7+n)%7;
  else cout<<7;
}

09 清理水域

问题描述
小蓝有一个n×m大小的矩形水域,小蓝将这个水域划分为n行m列,行数从1到n标号,
列数从1到m标号。每行和每列的宽度都是单位1。
现在,这个水域长满了水草,小蓝要清理水草。每次,小蓝可以清理一块矩形的区域,从第r1行(含)到第r2行(含)的第c1列(含)到c2列(含)。
经过一段时间清理后,请问还有多少地方没有被清理过。
输入格式
输入第一行包含两个整数n,m,用一个空格分隔 第二行包含一个整数t,表示清理的次数。
接下来t行,每行四个整数r1,c1,r2,c2,相邻整数之间用一个空格
分隔,表示一次清理。请注意输入的顺序。
输出格式
输出一行包含一个整数,表示没有被清理过的面积。
样例输入

2 3
2
1 1 1 3
1 2 2 2

样例输出

2

样例输入

30 20
2
5 5 10 15
6 7 15 9

样例输出

519

在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int n,m,t,a[105][105] = {0},r1,r2,c1,c2,sum = 0;
  cin >> n>>m >> t;
  for(int i =0;i < t;i++){
    cin >> r1 >> c1>> r2 >> c2;
    for(int j = r1;j <= r2;j ++){
      for(int k = c1;k <= c2;k++){
        if(a[j][k]==0){
          a[j][k] = 1;//标记被清理的水域
          sum ++;//记录被清理的水域 有多少个
        } 
      }
    }
  }
  int ans  = n * m - sum;//(n*m)为水域总数,减去被记录清理水域的个数sum 得出答案
  cout << ans ;
  return 0;
}

10 二进制表示

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明要用二进制来表示1到10000的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示1到10000的所有整数,至少需要多少个二进制位?

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n = 1;
    while (1)
    {
        if (pow(2, n) >= 10000)
            break;
        n++;
    }
    cout << n << endl;
}