[备战蓝桥杯系列]蓝桥杯总结部分经典题题解分享

news2024/10/6 1:41:19

文章目录

  • 题目1:空间
  • 题目2:数字三角形
  • 题目3:刷题统计
  • 题目4:阶乘约数
  • 题目5:回路计数

        本篇文章中的题解是我所写的代码且都是可以运行通过的, 总结出的一篇相对来说比较清晰的个人题解, 希望要备战蓝桥杯的小伙伴能够看到最后(由于本人要参加的是Java组, 所以后面的题解基本都是使用Java写的)~

题目1:空间

问题描述:
    小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?

        思路: 256MB = 256 * 1024 * 1024字节, 而一个字节等于8bit, 所以32位等于4字节, 最后除以四即可.

Java代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int t = 256 * 1024 * 1024;
        System.out.println(t / 4);
    }
}

题目2:数字三角形

问题描述:
在这里插入图片描述
    上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。
    路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

        思路: 自上而下进行遍历, 查看三角形左上方和右上方那个数值更大一点, 选择更大的加下来即可, 但是由于这道题有一个限制: 向左下走的次数与向右下走的次数相差不能超过1, 所以无论怎么走, 走到最后一行的时候, 一定是在中间位置的, 根据这一特性找到最大值即可.

Java代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] q = new int[n + 1][n + 1];
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= i; j++){
                q[i][j] = scanner.nextInt();
            }
        }
        for(int i = 2; i <= n; i++){
            for(int j = 1; j <= i; j++){
                q[i][j] += Math.max(q[i - 1][j], q[i - 1][j - 1]);
            }
        }
        if(n % 2 == 0){
          System.out.println(Math.max(q[n][n / 2], q[n][n / 2 + 1]));
        }else{
          System.out.println(q[n][n / 2 + 1]);
        }
    }
}

题目3:刷题统计

问题描述:
    小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题?

        思路: 直接模拟即可, 判断需要多少个星期多几天, 注意这道题需要使用long来存储.

Java代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long n = scanner.nextLong();
        long day = 0;
        long num = 0;
        long tmp = 5 * a + 2 * b;
        long d = n / tmp * 7;
        n %= tmp;
        while(num < n){
            day++;
            if(day % 7 == 6 || day % 7 == 0){
                num += b;
            }else{
                num += a;
            }
        }
        System.out.println(day + d);
    }
}

题目4:阶乘约数

问题描述:
    定义阶乘 n! = 1 × 2 × 3 × · · · × n。请问 100! (100 的阶乘)有多少个正约数。

        思路: 先将1到100中所有数的所有约数存起来(这一步就相当于分解一个数的质因数), 这样我们就得到了100! 分解成1乘到100的数的所有约数, 最后我们只需要根据公式: 将每一个约数的总数量+1乘在一起就可以得到100! 的约束个数.

Java代码:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        int[] arr=new int[110];
        for (int i=2;i<=100;i++){
            int n=i;
            for (int j=2;j*j<=n;j++ ){
                while (n%j==0){
                    arr[j]++;
                    n/=j;
                }
            }
            if (n>1){
                arr[n]++;
            }
        }
        long ans=1;
        for (int i=2;i<=100;i++){
            if (arr[i]>0){
                ans*=(arr[i]+1);
            }
        }
        System.out.println(ans);
    }
}

题目5:回路计数

问题描述:
    蓝桥学院由 21​​​ 栋教学楼组成,教学楼编号 1 到 21​​。对于两栋教学楼 a​​ 和 b​,当 aa​ 和 b​ 互质时,a 和 b 之间有一条走廊直接相连,两个方向皆可通行,否则没有直接连接的走廊。
    小蓝现在在第一栋教学楼,他想要访问每栋教学楼正好一次,最终回到第一栋教学楼(即走一条哈密尔顿回路),请问他有多少种不同的访问方案?
    两个访问方案不同是指存在某个 i,小蓝在两个访问方法中访问完教学楼 i 后访问了不同的教学楼。

        思路: 先将互为质数的教学楼两两连接起来(无向边, 两边都要连接), 接下来就是dp, 定义当前方案i的情况下以j为终点的方案数, 最后在路径求和的时候, 将以1到21为终点的教学楼都累加起来即可, 因为教学楼1与其他任意教学楼都会有边(1和任意数都是互为质数). 当然, 这样写肯定是会超时的, 但是在比赛中这是一道填空题, 所以我们只需要将计算的结果写入即可.

Java代码:

public class Main{
    public static int gcd(int a, int b){
        return b != 0 ? gcd(b, a % b) : a;
    }
    
    public static void main(String[] args){
        boolean[][] v = new boolean[25][25];
        long[][] dp = new long[1 << 21][25];
        long res = 0;
        for(int i = 1; i <= 21; i++){
            for(int j = 1; j <= 21; j++){
                if(gcd(i, j) == 1){
                    v[i - 1][j - 1] = true;
                    v[j - 1][i - 1] = true;
                }
            }
        }
        dp[1][0] = 1;
        for(int i = 1; i < (1 << 21); i++){
            for(int j = 0; j < 21; j++){
                if(((i >> j) & 1) == 0) continue; //当前状态中不存在楼j
                //寻找从楼j能够到达的下一栋楼
                for(int k = 0; k < 21; k++){
                    if(((i >> k) & 1) == 1 || v[j][k] == false) continue;
                    dp[i + (1 << k)][k] += dp[i][j];
                }
            }
        }
        //将以i为结尾点的回路求和 
    	for(int i = 0; i < 21; i++) 
    		res += dp[(1 << 21) - 1][i];
    	System.out.println(res);
    }
}

        未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vant 4 - 新版本发布!有赞出品的 Vue3 移动端 UI 组件库,轻量好用,免费开源

主流的 Vue 移动端组件库 Vant 迎来了第四个大版本的更新&#xff0c;用来开发手机端项目非常好用&#xff0c;强烈推荐给各位开发者使用。 关于 Vant 4 Vant 是一个轻量、可靠的移动端组件库&#xff0c;基于 Vue3&#xff0c;由有赞开发并且维护。有赞作为早期以 H5 商城、…

Mysql Yum安装

步骤一&#xff1a;首先下载mysql的yum源配置 1 | wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 步骤二&#xff1a;安装mysql的yum源 1 | yum -y install mysql57-community-release-el7-11.noarch.rpm 步骤三&#xff1a;yum方式安装mysql …

嵌入式开发环境搭建9步走(ubuntu)

学习嵌入式的同学们注意喽!我想你首先得搭建一个开发环境吧!否则你还能咋玩的起来?所以今天说一下嵌入式开发环境搭建。当然嵌入式系统有很多种&#xff0c;今天在这里以主流的ubuntu为例。 一、选择安装ubuntu8.10版本 【这版本可能有点老&#xff0c;这是曹忠明老师几年前写…

哈希的应用:海量数据处理

文章目录前言什么是海量数据处理位图的应用题目1题目2题目3布隆过滤器的应用问题1问题2哈希切割的应用题目1问题2前言 如果只需要知道某些元素是否存在于集合中&#xff0c;当数据量达到一定程度时&#xff08;以亿级起步&#xff09;&#xff0c;搜索树、哈希表等数据结构会因…

你评论,我赠书~【TFS-CLUB社区 第10期赠书活动】〖uni-app跨平台开发与应用从入门到实践〗等你来拿,参与评论,即可有机获得

文章目录❤️‍&#x1f525; 赠书活动 - 《uni-app跨平台开发与应用从入门到实践》❤️‍&#x1f525; 编辑推荐❤️‍&#x1f525; 抽奖方式与截止时间❤️‍&#x1f525; 赠书活动 → 获奖名单❤️‍&#x1f525; 赠书活动 - 《uni-app跨平台开发与应用从入门到实践》 内…

三子棋超详细解说,人机大战,PVP玩家对战

&#x1f992;这个游戏相信大家都听过&#xff0c;三子棋&#xff0c;不就是井字棋吗&#xff1f;那么今天我们就来亲手制作一个三子棋游戏&#xff0c;实现人机“智能”大战以及玩家PVP对战。 &#x1f412;三子棋的基本功能构思 &#x1f992;面对一个较大的游戏程序我们要做…

全套Python学习路线,快速上手!

最近几年随着互联网的发展学习Python人越来越多&#xff0c;Python的初学者总希望能够得到一份Python学习路线图&#xff0c;小编经过多方面汇总&#xff0c;总结出比较全套Python学习路线&#xff0c;快速上手。对于一个零基础的想学习python的朋友来说&#xff0c;学习方法很…

JavaWeb框架(二):Servlet组件入门

Servlet入门 MVC实战项目 仓储管理系统Servlet 入门DemoServlet 执行流程、生命周期执行流程生命周期Servlet API介绍Servlet体系结构Servlet urlPattern配置Servlet&#xff1a;请求与响应Request&#xff1a;请求请求的构成请求API方法来获取对应的值:请求参数的获取方式请求…

月入5000+|技术博客长期搬砖项目

大家好&#xff0c;我是钱der。 这篇文章介绍一个我之前研究过一段时间的小众技术人员的副业项目&#xff0c;做的好一天有几百收入&#xff0c;做的差一天也能有几十收入&#xff0c;这个项目只需要前期的积累&#xff0c;后期坐等收钱就可以。这个项目有一定的门槛&#xff…

动态规划DP

动态规划 DP3. 动态规划 DP什么是动态规划动态规划和其他算法的区别解题方法解题步骤[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) (easy)暴力递归递归 记忆体动态规划滚动数组优化动态规划 降维[62. 不同路径](https://leetcode.cn/problems/unique-…

[vue应用实践]:vue3使用自定义指令定义拖拽方法

总结一些日常需要用到的一些api&#xff0c;也是在一些面试中会经常出现的题目&#xff0c;今天分享的是vue3中使用自定义指令封装拖拽方法&#xff0c; 同时文章也被收录到我的《JS基础》专栏中&#xff0c;欢迎大家点击收藏加关注。 vue指令 vue中有内置的一些指令供我们使用…

信贷产品年终总结之贷中行为分析

番茄知识星球平台上周开始推出信贷业务年终总结的系列文章&#xff0c;首篇主题为客户特征画像&#xff0c;并已在平台发布&#xff08;12月13日&#xff09;&#xff0c;感兴趣童鞋可前翻查阅。作为系列专题的续集&#xff0c;本篇将围绕信贷存量数据为大家带来第二个主题“贷…

多维数据库概念与理解

如今多维数据库已经越来越普及&#xff0c;不少公司开始研发属于自己公司的基于多维开发的作业平台。利用多维的数据直观化、效率高等优势&#xff0c;直接打开数据分析的大门。 有人好奇什么是多维数据库&#xff1f;下面我和大家一一探讨 其实多维数据库是指将数据存放在一…

C语言数组

1、数组 数组使用之前必须声明&#xff1a; 类型定义符 数组名[常量表达式] 在声明数组时必须说明数组长度。 较好的方法是用宏来定义数组的长度。 #include <stdio.h> #define N 10 int main() { int arr[N];for(int i0;i<10;i){arr[i]i1;printf("%d &q…

科技云报道:疫情三年,数字会展成色几何?

科技云报道原创。 三年疫情&#xff0c;会展行业并未消极等待&#xff0c;线上线下融合趋势越来越明显&#xff0c;“数字展会”模式已成为常态化。 据《中国会展主办机构数字化调研报告&#xff08;2022&#xff09;》显示&#xff0c;超七成会展主办方采取数字化手段提升展…

OpenCV 之 图像平滑

1 图像平滑 图像平滑&#xff0c;可用来对图像进行去噪 (noise reduction) 或 模糊化处理 (blurring)&#xff0c;实际上图像平滑仍然属于图像空间滤波的一种 (低通滤波) 既然是滤波&#xff0c;则图像中任一点 (x, y)&#xff0c;经过平滑滤波后的输出 g(x, y) 如下&#xff…

从编程小白到年薪40万,为什么首选Python?

前言 在众多的计算及语言中&#xff0c;呼声很高、位列编程语言榜前面的无疑是生命力顽强的java、最近热度猛增的Python、被称为万物之源的C语言、争议很大的PHP等等。但是对于初学者来说&#xff0c;计算机语言就像天书&#xff0c;不知道到底该学习哪个&#xff0c;从哪一门…

Karl Guttag:Niantic户外AR参考设计或采用Lumus光波导

前不久&#xff0c;Niantic在高通骁龙峰会上公布了一款用于户外场景的AR眼镜参考设计&#xff0c;其特点是采用无线一体化设计&#xff0c;配备了柔性头带&#xff0c;可用来玩LBS AR游戏。目前关于该AR眼镜方案的信息不多&#xff0c;它的光学方案是大家非常关注的一点&#x…

游戏服务端 - AOI九宫格算法

游戏服务端 - AOI九宫格算法 下面简述内容&#xff0c;只针对平面上的简易场景。我们将平面上的场景分为一个个格子&#xff08;Grid&#xff09;&#xff0c;场景管理所有的Grid。如下&#xff08;假设场景的长宽均为20&#xff0c;每个格子宽高定义为1&#xff09;&#xff1…

电脑怎么查看是固态硬盘还是机械硬盘

前言 前两天有粉丝问我&#xff0c;买电脑的时候有的参数看不懂&#xff0c;比如固态硬盘和机械硬盘区分&#xff0c;他听商家说给他配置的电脑是512G固态硬盘&#xff0c;但是又不知道从哪里看到底是不是固态硬盘&#xff0c;怕以次充好。 今天我就跟大家详细介绍一下硬盘到…