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

蓝桥杯省赛(2024)

问题描述

小蓝和朋友们在玩一个报数游戏。由于今年是 20242024 年,他们决定要从小到大轮流报出是 2020 或 2424 倍数的正整数。前 1010 个被报出的数是:20,24,40,48,60,72,80,96,100,12020,24,40,48,60,72,80,96,100,120。请问第 202420242024202420242024 个被报出的数是多少?

答案提交

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

public class One {
    public static void main(String[] args){
        System.out.println("2429042904288");
    }
}

这个题很简单 ,我是直接算的答案

问题描述

对于一个有 nn 位的十进制数 N=d1d2d3…dnN=d1​d2​d3​…dn​,可以生成一个类斐波那契数列SS,数列 SS 的前 nn 个数为:

{S1=d1,S2=d2,S3=d3,…,Sn=dn}{S1​=d1​,S2​=d2​,S3​=d3​,…,Sn​=dn​}

数列 SS 的第 k(k>n)k(k>n) 个数为:

i=k−nk−1Sii=k−n∑k−1​Si​

如果这个数 NN 会出现在对应的类斐波那契数列 SS 中,那么 NN 就是一个类斐波那契循环数。

例如对于 197197,对应的数列 SS 为:

{1,9,7,17,33,57,107,197,…}{1,9,7,17,33,57,107,197,…}

197197 出现在 SS 中,所以 197197 是一个类斐波那契循环数。

请问在 00 至 107107 中,最大的类斐波那契循环数是多少?

答案提交

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

package fifth;

import java.util.Arrays;

public class Two {
    static int N=10000000;
    public static void main(String[] args){
        for(int i=N;i>0;i--){
            if(fun(i)){
                System.out.println(i);
                break;
            }
        }
    }
    public static boolean fun(int a){
        String s=a+"";
        int l=s.length();
        int[] num=new int[l];
        for(int i=0;i<l;i++){
            num[i]=s.charAt(i)-'0';
        }
        int sum=0;
        for(int i=l;sum<a;i++){
            sum=Arrays.stream(num).sum();
            num[i%l]=sum;
        }
        if(sum==a) return true;
        else return false;
    }
}

这个题:倒序遍历+一个用于判断的函数

问题描述

小蓝最近学习了一种神奇的队列: 分布式队列。简单来说,分布式队列包含 NN 个节点(编号为 0 至 N−1N−1,其中 0 号为主节点),其中只有一个主节点,其余为副节点。

主/副节点中都各自维护着一个队列,当往分布式队列中添加元素时,都是由主节点完成的(每次都会添加元素到主节点对应的队列的尾部);副节点只负责同步主节点中的队列。可以认为主/副节点中的队列是一个长度无限的一维数组,下标为 0,1,2,3…0,1,2,3…,同时副节点中的元素的同步顺序和主节点中的元素添加顺序保持一致。

由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节点后,需要同步到所有的副节点后,才具有可见性。

给出一个分布式队列的运行状态,所有的操作都按输入顺序执行。你需要回答在某个时刻,队列中有多少个元素具有可见性。

输入格式

第一行包含一个整数 NN,表示节点个数。

接下来包含多行输入,每一行包含一个操作,操作类型共有以下三种: addadd、syncsync 和 queryquery,各自的输入格式如下:

  1. addelementaddelement: 表示这是一个添加操作,将元素 elementelement 添加到队列中;

  2. syncfolloweridsyncfollowerid​: 表示这是一个同步操作,followeridfollowerid​ 号副节点会从主节点中同步下一个自己缺失的元素;

  3. queryquery: 查询操作,询问当前分布式队列中有多少个元素具有可见性。

输出格式

对于每一个 queryquery 操作,输出一行,包含一个整数表示答案。

package fifth;

import java.util.Scanner;

public class Three {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] a=new int[n];
        while(scanner.hasNext()){
            String act=scanner.next();
            if(act.equals("add")){
                int m=scanner.nextInt();
                a[0]++;
            }else if(act.equals("sync")){
                int num=scanner.nextInt();
                a[num]=Math.min(a[0],a[num]+1);
            }else if(act.equals("query")){
                int ans=a[0];
                for(int i=1;i<n;i++){
                    ans=Math.min(ans,a[i]);
                }
                System.out.println(ans);
            }
        }
    }
}

很简单的一个题,一开始题目看错了,走了弯路,所以说越简单的越要认真!

 

问题描述

SS 学校里一共有 a2a2​ 个两人寝、a3a3​ 个三人寝,a4a4​ 个四人寝,而食堂里有 b4b4​ 个四人桌和 b6b6​ 个六人桌。学校想要安排学生们在食堂用餐,并且满足每个寝室里的同学都在同一桌就坐,请问这个食堂最多同时满足多少同学用餐?

输入格式

采用多组数据输入。

输入共 q+1q+1 行。

第一行为一个正整数 qq 表示数据组数。

后面 qq 行,每行五个非负整数 a2,a3,a4,b4,b6a2​,a3​,a4​,b4​,b6​ 表示一组数据。

输出格式

输出共 qq 行,每行一个整数表示对应输入数据的答案。

样例输入

2
3 0 1 0 1
0 2 2 1 1

样例输出

6
10
package fifth;

import java.util.Scanner;

public class Four {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int q=scanner.nextInt();
        for(int i=0;i<q;i++){
            int MaxStu=0;
            int a2=scanner.nextInt();
            int a3=scanner.nextInt();
            int a4=scanner.nextInt();
            int b4=scanner.nextInt();
            int b6=scanner.nextInt();
            while(a4>0&&b4>0){
                MaxStu+=4;
                a4--;
                b4--;
            }
            while(a2>=2&&b4!=0){
                MaxStu+=4;
                a2-=2;
                b4--;
            }
            while(a2>0&&a4>0&&b6>0){
                MaxStu+=6;
                a2--;
                a4--;
                b6--;
            }
            while(a3>=2&&b6>0){
                MaxStu+=6;
                a3-=2;
                b6--;
            }
            while(a2>=3&&b6>0){
                MaxStu+=6;
                a2-=3;
                b6--;
            }
            while(a2>0&&a3>0&&b6>0){
                MaxStu+=5;
                a2--;
                a3--;
                b6--;
            }

            while(a4>0&&b6>0){
                MaxStu+=4;
                a4--;
                b6--;
            }

            while(a2>=2&&b6>0){
                MaxStu+=4;
                a2-=2;
                b6--;
            }

            while(a3>0&&b4>0){
                MaxStu+=3;
                a3--;
                b4--;
            }
            while(a3>0&&b6>0){
                MaxStu+=3;
                a3--;
                b6--;
            }
            while(a2>0&&b4>0){
                MaxStu+=2;
                a2--;
                b4--;
            }
            while(a2>0&&b6>0){
                MaxStu+=2;
                a2--;
                b6--;
            }
            System.out.println(MaxStu);
        }
    }
}

一看到这种题目就想跳过...因为没有什么头绪,但是这个好像还好,因为数据不是很大,然后要考虑的情况也还好,不是很多.

问题描述

小蓝开了一家宠物店,最近有一种 XX 病毒在动物之间进行传染,小蓝为了以防万一打算购买测试剂对自己的宠物进行病毒感染测试。

为了减少使用的测试剂数目,小蓝想到了一个好方法:将 NN 个宠物平均分为若干组,使得每组恰好有 KK 只宠物,这样对同一组的宠物进行采样并混合后用一个试剂进行检测,如果测试结果为阴性则说明组内宠物都未感染 XX 病毒;如果是阳性的话则需要对组内所有 KK 只宠物单独检测,需要再消耗 KK 支测试剂(当 K=1K=1 时,就没必要再次进行单独检测了,因为组内只有一只宠物,一次检测便能确认答案)。

现在我们已知小蓝的宠物被感染的概率为 pp,请问 KK 应该取值为多少才能使得期望的测试剂的消耗数目最少?如果有多个答案输出最小的 KK。

输入格式

第一行,一个整数 NN 。

第二行,一个浮点数 pp 。

输出格式

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

样例输入

1000
0.05

样例输出

5
package fifth;

import java.util.Scanner;

public class six {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        double p=scanner.nextDouble();
        int MinK=1;
        double MinAll=Double.MAX_VALUE;
        for(int k=n;k>=1;k--){
            if(n%k!=0) continue;
            double P=1-Math.pow(1-p,k);
            double ans=(n/k)*(1+k*P);
            if(ans<MinAll){
                MinAll=ans;
                MinK=k;
            }else if(ans==MinAll){
                MinK=Math.min(k,MinK);
            }
        }
        System.out.println(MinK);
    }
}

emm...数学题...看命,会就会,不会就gg...

哈哈,剩下三个我不写,你说我是会还是不会...

 

 

 

 

 


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

相关文章:

  • 如何创建HTML自定义元素:使用 Web Component 的最佳实践
  • 从零精通机器学习:线性回归入门
  • 书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离
  • Flink 初体验:从 Hello World 到实时数据流处理
  • Chat2DB:让数据库管理像聊天一样简单
  • Windows 命令行终端常用的基础命令
  • RxSwift 学习笔记第四篇之RxSwift在项目中的简单应用
  • (C语言)指针与指针数组的使用教学(C语言基础教学)(指针教学)
  • Java中的消息中间件对比与解析:RocketMQ vs RabbitMQ
  • Matlab GPU加速技术
  • 蓝桥杯备赛(基础语法3)
  • 嵌入式八股,手撕线程池(C++)
  • vue3+Ts+elementPlus二次封装Table分页表格,表格内展示图片、switch开关、支持
  • 计算机图形学学习日志3
  • 数智读书笔记系列018 《多模态大模型:技术原理与实战》解锁多模态从原理到实战的深度探索
  • 3.14学习总结 排序算法
  • 高精度加法,高精度乘法,高精度除法,高精度减法,链表相加
  • 如何仅在conda中更新gcc版本
  • 什么是数学建模?数学建模是将实际问题转化为数学问题
  • Linux服务器跑python脚本定时任务