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


    在这里插入图片描述

    01 删除字符

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

    LANQIAO
    3
    
    • 1
    • 2

    输出

    AIAO
    
    • 1
    #include 
    #include 
    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    02 最大降雨量

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

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

    03 分数

    在这里插入图片描述

    #include 
    #include 
    int main()
    {
      int x,y;
      x=pow(2,20)-1;
      y=pow(2,19);
      printf("%d/%d",x,y);
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    04 鲁卡斯队列

    在这里插入图片描述

    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    05 公约数

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

    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    06 求和

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

    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    07 字母数

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

    #include
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    08 星期计算

    在这里插入图片描述

    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    
    • 1
    • 2
    • 3
    • 4

    样例输出

    2
    
    • 1

    样例输入

    30 20
    2
    5 5 10 15
    6 7 15 9
    
    • 1
    • 2
    • 3
    • 4

    样例输出

    519
    
    • 1

    在这里插入图片描述

    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    10 二进制表示

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

    #include
    #include
    using namespace std;
    int main()
    {
        int n = 1;
        while (1)
        {
            if (pow(2, n) >= 10000)
                break;
            n++;
        }
        cout << n << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    【MySQL】一文学会所有MySQL基础知识以及基本面试题
    Linux内核源码编译-built-in.o 文件编译生成过程
    使用Jmeter轻松实现AES加密测试
    B. Good Kid
    ftl和html的区别?
    SpringCloud Alibaba——分布式事务 Seata
    PHP redis key
    【OpenGL概念】QOpenGLWidget类详述--此文档基于Qt5.14.2
    面试官:消息队列为啥会丢失消息?
    【经验分享】PS如何设置像素
  • 原文地址:https://blog.csdn.net/weixin_74774974/article/details/133090490