当前位置: 首页 > article >正文

蓝桥杯模拟

【问题描述】

如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。

请问 2024 有多少个质因数。

【答案提交】

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

3

【问题描述】

对于一个整数 n ,我们定义一次开根变换会将 n 变为开根号后的整数部分。即变为平方和不超过 n 的数中的最大数。

例如,20 经过开根变换将变为 4 ,如果再经过一次开根变换将变为 2 ,如果再经过一次开根变换将变为 1 。

请问,2024经过多少次开根变换后会变为 1 ?

【答案提交】

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

  • 答案 4

【问题描述】

小蓝有很多 1x1x1 的小立方体,他可以使用多个立方体拼成更大的立方体。

例如,小蓝可以使用 8 个小立方体拼成一个大立方体,每边都是 2 个。

又如,小蓝可以使用 27 个小立方体拼成一个大立方体,每边都是 3 个。

现在,小蓝有 2024 个小立方体,他想再购买一些小立方体,用于拼一个超大的立方体,要求所有的小立方体都用上,拼成的大立方体每边长度都相等。

请问,小蓝最少需要购买多少个小立方体?

【答案提交】

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

173

如果一个日期的日期以 1 结尾(1日、11日、21日、31日)且为星期一,则称这个日期为一好日期。

请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。

提示:1901 年 1 月 1 日是星期二。

【答案提交】

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

  • 答案  762

填空题

【问题描述】

两个数按位异或是指将这两个数转换成二进制后,最低位与最低位异或作为结果的最低位,次低位与次低位异或作为结果的次低位,以此类推。

例如,3 与 5 按位异或值为 6 。

小蓝有以下 30 个整数:

9226, 4690, 4873, 1285, 4624, 1596, 6982, 590, 8806, 121, 8399, 8526, 5426, 64, 9655, 7705, 3929, 3588, 7397, 8020, 1311, 5676, 3469, 2325, 1226, 8203, 9524, 3648, 5278, 8647.

小蓝想找一个整数 V ,使得 V 与这 30 个数分别异或后,得到的 30 个数的平方和最小。请问平方和最小是多少?

【答案提交】

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

  • 答案 1070293541

【问题描述】

小蓝在一个停车场停车。

停车场的收费规则为:每 15 分钟收费 2 元,不满 15 分钟的不收费。

小蓝总共停车 n 分钟,请问收费总额是多少?

【输入格式】

输入一行包含一个整数 n ,表示小蓝停车的时长。

【输出格式】

输出一行包含一个整数,表示停车费用。

【样例输入】

150

【样例输出】

20

#include <stdio.h>
#include <stdlib.h>

int main(){
    
    int i = 0 ;
    int a = 0; //时间
    int sum = 0 ; //收费
    scanf("%d",&a);//获取收入的时间
    if(a>=15){
        i= a/15; //获取单位时间
        sum = 2*i;
        printf("%d",sum);
    }else{
        sum = 0;
         printf("%d",sum);
    }
    return 0 ;
}

【问题描述】

小蓝有一个整数 n ,每次操作,可以将这个整数的每个非零数位减少 1 。

请问经过多少次操作,这个数会变为 0 。

例如,整数 2024 经过一次操作变为 1013,再经过一次操作变为 2 (即0002),再经过两次操作变为 0 ,总共经过 4 次变换变为 0 。

【输入格式】

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

【输出格式】

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

【样例输入】

2024

【样例输出】

4

#include <stdlib.h>
#include <stdio.h>
int main(){
    int a1 = 0,a2 = 0,a3 = 0,a4 = 0;//取千位,百位,十位,个位
    int b1 = 0;//获取输入的值
    int n = 0;//记录变换多少次
    scanf("%d",&b1);
    while(b1!=0){
        a1=b1/1000;
         a2=((b1/100)%10);
         a3=((b1%100)/10);
          a4=b1%10;
        //取千位
        if(a1>0){
            
            a1 = a1-1;
        }
        if(a2>0){  //百位 
           
            a2 = a2-1;
        }
        if(a3>0){ //十位
           
            a3 = a3-1;
        }
        if(a4>0){ //个位 
            a4 = a4-1;
        }
        //判断是否跳出循环
        b1 = (a1*1000)+(a2*100)+(a3*10)+a4;
        n++;
      
    }
     printf("%d",n);
    return 0;
}

小蓝有一个减法式子,形如 a-b,其中 a 和 b 都是非负整数(不保证结果非负)。

请编程处理这个式子,输出运算结果。

【输入格式】

输入一行包含一个减法表达式,式子中仅含数字字符和一个减号。

【输出格式】

输出一行包含一个整数,表示运算结果。

【样例输入】

2024-1949

【样例输出】

75

【样例输入】

20-24

【样例输出】

-4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main() {
    char expression[100]; // 存放输入的字符串
    scanf("%s", expression);

    // 找到减号的位置
    char *minusSign = strchr(expression, '-');
    if (minusSign == NULL) {
        printf("输入错误\n");
        return 1;
    }

    // 将减号前后的字符串转换为整数
    char *aStr = expression;
    char *bStr = minusSign + 1;

    int a = atoi(aStr);
    int b = atoi(bStr);

    // 计算减法结果
    int result = a - b;

    // 输出结果
    printf("%d\n", result);

    return 0;
}

【问题描述】

小蓝有一个长度为 n 的整数数列 a[1], a[2], ..., a[n] 。

对于一个给点的整数 k ,小蓝想找到相邻间隔为 1 的 k 个数 a[p], a[p+2], a[p+4], ..., a[p+2k-2],使得他们的和最大。其中 1 <= p <= n-2k+2。

给定数列和 k ,请问给出最大的和。

【输入格式】

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

第二行包含 n 个整数,相邻数之间使用一个空格分隔,依次表示 a[1], a[2], ..., a[n] 。

第三行包含一个整数 k 。

【输出格式】

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

【样例输入】

10
2 1 4 7 4 8 3 6 4 7
2

【样例输出】

15

【样例说明】

取 p=4,a[4]+a[6]=7+8=15 最大。

#include <stdio.h>
#include <stdlib.h>

// 计算给定数列中满足条件的相邻间隔为1的k个数的最大和
int maxsum(int *a, int n, int k) {
    int maxsumvalue = 0;
    int currentsum = 0;

    // 计算初始窗口内元素的和
    for (int i = 0; i < 2 * k - 1; i += 2) {
        currentsum += a[i];
    }
    maxsumvalue = currentsum;

    // 更新最大和
    for (int p = 1; p < n - 2 * k + 2; p++) {
        currentsum = currentsum - a[p - 1] + a[p + 2 * k - 2];
        if (currentsum > maxsumvalue) {
            maxsumvalue = currentsum;
        }
    }

    return maxsumvalue;
}

int main() {
    int n, k;

    // 获取数列长度n
    
    scanf("%d", &n);

    // 获取k值
  
    scanf("%d", &k);

    // 动态分配数组内存以存储数列
    int *a = (int *)malloc(n * sizeof(int));
    if (a == NULL) {
        
        return 1;
    }

    // 获取数列的元素
   
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 计算并输出最大和
    int result = maxsum(a, n, k);
    printf("%d\n", result);

    // 释放动态分配的内存
    free(a);

    return 0;
}

【问题描述】

小蓝有一个长度为 n 的整数序列 a[1], a[2], ..., a[n] 。

他希望从中找出一个最长的子序列,形成一个勾的形状(√)。

即找到 1 <= p[1] < p[2] < ... < p[k] <= n,满足 a[p[1]] > a[p[2]] > a[p[3]] > ... > a[p[x]] < a[p[x+1]] < ... < a[p[k]] 。其中 k 是子序列的长度,x 是勾中最小的位置。目标是使得 k 最大。

请找出最大的勾的长度。

【输入格式】

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

第二行包含 n 个整数,相邻数之间使用一个空格分隔,依次表示 a[1], a[2], ..., a[n] 。

【输出格式】

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

【样例输入】

10
2 1 4 7 4 8 3 6 4 7

【样例输出】

5

【样例说明】

当 p = (4,5,7,9,10) 时,a[4] , a[5] , a[7] , a[9] , a[10] 可形成一个长度为 5 的勾:7,4,3,6,7。

#include <stdio.h>
#include <limits.h>

int main() {
    int n;
    scanf("%d", &n);

    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 计算以每个位置为结尾的最长上升子序列长度
    int lis[n];
    for (int i = 0; i < n; i++) {
        lis[i] = 1;
        for (int j = 0; j < i; j++) {
            if (a[j] < a[i]) {
                lis[i] = lis[i] > lis[j] + 1 ? lis[i] : lis[j] + 1;
            }
        }
    }

    // 计算以每个位置为起始的最长下降子序列长度(注意这里是从右到左遍历)
    int lds[n];
    for (int i = n - 1; i >= 0; i--) {
        lds[i] = 1;
        for (int j = n - 1; j > i; j--) {
            if (a[j] < a[i]) {
                lds[i] = lds[i] > lds[j] + 1 ? lds[i] : lds[j] + 1;
            }
        }
    }

    // 找到最长的“勾”
    int maxHookLength = 0;
    for (int i = 1; i < n - 1; i++) { // 注意从1开始到n-2结束,因为我们需要有足够的空间来形成“勾”
        int hookLength = lis[i] + lds[i] - 1; // 减去1是因为i被重复计算了
        if (hookLength > maxHookLength) {
            maxHookLength = hookLength;
        }
    }

    printf("%d\n", maxHookLength);

    return 0;
}


http://www.kler.cn/a/397006.html

相关文章:

  • RHCE的学习(20)
  • 什么是PostgreSQL,有什么特点
  • TCP(下):三次握手四次挥手 动态控制
  • awk(常用)
  • CondaError: Run ‘conda init‘ before ‘conda activate‘解决办法
  • [Admin] Dashboard Filter for Mix Report Types
  • 动态规划 —— 子数组系列-乘积为正数的最长子数组长度
  • arkUI:水果选择与管理:基于 ArkUI 的长按编辑功能实现
  • 基于RK3568J多网口电力可信物联网关解决方案
  • leetcode day10 动态规划篇 64+139
  • 通过JS实现下载图片到本地教程分享
  • 23种设计模式-观察者(Observer)设计模式
  • 数据分析-Excel基础操作
  • 变摩擦系数在机械中的应用
  • 蓝队基础5 -- 安全策略与防护技术
  • WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇
  • 代码随想录算法训练营day41|动态规划04
  • [IP组播]IGMP配置实验
  • WebSocket Endpoint端点
  • 【Go语言——数据结构】稀疏数组(SparseArray)
  • AutoUpdater.NET 实现 dotNET应用自动更新
  • paramiko 库实现的暴力破解 SSH 密码
  • 建筑企业新闻稿怎么写?工程行业评职称品牌宣传背书的报纸期刊杂志媒体有哪些
  • 实现 MVC 模式
  • 第23课-C++-红黑树的插入与旋转
  • 新增支持Elasticsearch数据源,支持自定义在线地图风格,DataEase开源BI工具v2.10.2 LTS发布