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

蓝桥杯刷题——day5

蓝桥杯刷题——day5

  • 题目一
    • 题干
    • 解题思路一
    • 代码
    • 解题思路二
    • 代码
  • 题目二
    • 题干
    • 解题思路
    • 代码

题目一

题干

给定n个整数 a1,a2,⋯ ,an,求它们两两相乘再相加的和,即:
在这里插入图片描述
示例一:

输入:
4
1 3 6 9
输出:
117

题目链接:求和

解题思路一

初次看这个题目第一感觉是用两个双循环首先外循环的i从a1开始一直到an-1(n-1是下标),内层循环从i+1开始一直到an,然后设置一个sum用于接收他们的和,如此一来就完成了求和,下面是完整代码:

代码

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();int[] arr = new int[num];int i = 0;while (num > 0) {arr[i] = scanner.nextInt();num--;i++;}int sum = 0;for (int n = 0; n < arr.length - 1; n++) {for (int m = n + 1; m < arr.length; m++) {sum = sum + arr[n] * arr[m];}}System.out.println(sum);}
}

这个方法很容易想到,但是我们发现了此方法的时间复杂度是O(n),因此时间复杂度很大,如果用这个代码去提交我们就会发现并不能完全通过,因此需要找更简便的方法。

解题思路二

原题是:
在这里插入图片描述
提取公因式,我们可以化简为:
在这里插入图片描述
现在,我们要使用一种叫“前缀和”的方法,定义一个数组b,令bi=a1+a2+⋯+aj,很容易发现:
在这里插入图片描述
因此上述化简后的计算就可以化简为:
在这里插入图片描述
根据这个公式我们就能够完成求和,首先,我们创建另一个数组用于存储b,用一个for循环完成求和,下面是完整代码:

代码

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();long[] arr1 = new long[num];long[] arr2 = new long[num];int i = 0;while (num > 0) {arr1[i] = scanner.nextInt();num--;i++;}for (i = 0; i < arr2.length; i++) {if (i == 0) {arr2[i] = arr1[i];} else {arr2[i] = arr2[i - 1] + arr1[i];}}long sum = 0L;for (i = 0; i < arr1.length; i++) {sum = sum +arr1[i] * (arr2[arr2.length-1] - arr2[i]);}System.out.println(sum);}
}

题目二

题干

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。
示例一:

输入:
20200202
输出:
20211202
21211212

题目链接:回文日期

解题思路

这道题其实不难,只是考虑的东西很多,考察的就是看问题的严谨程度,首先我们要保证这个数的日期要是一个合法的日期,什么意思?月只能是1到12,而日的合法性更多,日根据月来定,比如一月是31天,四月是30天,并且还要判断闰年,因为闰年2月才是29天。因此我们可以创建一个函数判断日期是否合法。那么整体的思路就可以是,从输入的数字后一位开始逐一遍历,首先判断这个日期是否合法,如果日期合法再通过双指针判断是否是回文日期,如果是回文日期了,在判断该日期是否是ABABBABA型的回文日期。下面是完整代码:

代码

import java.util.Scanner;
public class Main {public static boolean check_data(int data) {int[] months = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int year = data / 10000; //年int month = data % 10000 / 100; //月int day = data % 100; //日if (day == 0 || month <= 0 || month > 12) {return false;}if (month != 2 && day > months[month]) {return false;}if (month == 2) {//月份是2if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) if (day > 29) return false;//是闰月, day必须<=29else if (day > 28) return false;//是平月,day必须<=28}return true;}public static boolean check_huiwen(String s) {char[] arr = s.toCharArray();int len = s.length();for (int i = 0, j = len - 1; i < j; i++, j--)//i从前往后,j从后往前扫一遍if (arr[i] != arr[j]) {return false;//不对称,就不回文}return true;}public static boolean check_ABAB(String s) {char[] arr = s.toCharArray();if (check_huiwen(s)) {return arr[0] == arr[2] && arr[1] == arr[3] && arr[0] != arr[1];}return false;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();boolean flag = false;for (int i = num + 1; i <= 99999999; i++) {//枚举回文数if (check_data(i)) {String s = String.valueOf(i);if (check_huiwen(s) && !flag) {System.out.println(i);flag = true;}if (check_ABAB(s)) {System.out.println(i);break;}}}}
}

check_data函数用于判断日期是否是合法日期,其中有一个值得注意的地方是,我是用数组来存储每个月份应该有的天数,这个也方便了我们用于if判断。check_huiwen函数是用于判断日期是否是回文日期,我用了前后两个指针进行比较i往前,j往后。check_ABAB函数是用于判断日期是否是ABABBABA的日期,我们知道如果是ABABBABA那么一定是回文,因此我们只需要判断第一个数跟第三个数是否一样,并且第二个数跟第四个数是否一样,并且第一个数跟第二个数不能一样(因为第一个数跟第二个数一样了,就变成了AAAAAAAA),有细心的同学会问哪个flag的目的是什么?我们知道题目要求打印第一个回文日期,那么我们设置一个flag,如果找到了我们就把flag致为true,而ABABBABA找到了之后直接跳出循环就可以了,问题解决。如果有什么问题或者想说的欢迎私信和评论,谢谢各位的点赞收藏。

相关文章:

蓝桥杯刷题——day5

蓝桥杯刷题——day5 题目一题干解题思路一代码解题思路二代码 题目二题干解题思路代码 题目一 题干 给定n个整数 a1,a2,⋯ ,an&#xff0c;求它们两两相乘再相加的和&#xff0c;即&#xff1a; 示例一&#xff1a; 输入&#xff1a; 4 1 3 6 9 输出&#xff1a; 117 题目链…...

YOLO11改进-模块-引入多尺度差异融合模块MDFM

遥感变化检测&#xff08;RSCD&#xff09;专注于识别在不同时间获取的两幅遥感图像之间发生变化的区域。近年来&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在具有挑战性的 RSCD 任务中展现出了良好的效果。然而&#xff0c;这些方法未能有效地融合双时相特征&#x…...

vlan和vlanif

文章目录 1、为什么会有vlan的存在2、vlan(虚拟局域网)1、vlan原理1. 为什么这样划分了2、如何实现不同交换机相同的vlan实现互访呢3、最优化的解决方法&#xff0c;vlan不同交换机4、vlan标签和vlan数据帧 5、vlan实现2、基于vlan的划分方式1、基于接口的vlan划分方式2、基于m…...

Apache Kylin最简单的解析、了解

官网&#xff1a;Overview | Apache Kylin 一、Apache Kylin是什么&#xff1f; 由中国团队研发具有浓厚的中国韵味&#xff0c;使用神兽麒麟&#xff08;kylin&#xff09;为名 的一个OLAP多维数据分析引擎:&#xff08;据官方给出的数据&#xff09; 亚秒级响应&#xff…...

MySQL——连接

一.引入库 我们已经分享了很多通过命令行方式去操作数据库&#xff0c;那么数据库该怎么通过语言去访问呢&#xff1f; 这里分享怎么通过C/C来连接数据库。 首先需要到MySQL官网&#xff0c;下载专门用于C/C连接数据库的库&#xff0c;但是一般不需要再去官网下载。 因为在…...

前端微服务实战:大型应用的拆分与治理

"这个系统已经无法维护了..."周五的架构评审会上,我盯着屏幕上那张错综复杂的依赖关系图发愁。作为一个运行了三年的企业级中后台系统,代码量已经超过 50 万行,构建时间长达 40 分钟,任何修改都可能引发连锁反应。 更让人头疼的是,随着业务的快速发展,不同业务线之间…...

Linux shell的七大功能 --- history

1.直接输入“history” 这个命令可以显示出曾经使用过的命令&#xff08;最近时间的500条&#xff09; history 2.“history”命令也可以搭配其他命令一起使用。 例&#xff1a;history | grep "vim"&#xff0c;找出所有包含“vim”的记录&#xff1b; 也可以搭配…...

C++ webrtc开发(非原生开发,linux上使用libdatachannel库)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、libdatachannel库的下载和build二、开始使用 1.2.引入库3.开始使用 总结 前言 使用c开发webrtc在互联网上留下的资料甚少&#xff0c;经过我一段时间的探…...

C语言刷题

1. 题目描述 根据给出的三角形3条边a:b.c(a.b,c<100.000)&#xff0c;计算三角形的周长和面积。 输入描述: 一行&#xff0c;三角形3条边(能构成三角形)&#xff0c;中间用一个空格隔开. 输出描述: 一行&#xff0c;三角形周长和面积保留两位小数&#xff0c;中问用一个空…...

LabVIEW实现RFID通信

目录 1、RFID通信原理 2、硬件环境部署 3、程序架构 4、前面板设计 5、程序框图设计 6、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联网系…...

Linux 网络流量控制 - 实现概述

摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计&#xff0c;描述了其结构&#xff0c;并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov&#xff08;kuznet…...

分布式 令牌桶算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 令牌桶算法 & 总结》《分布式 & 令牌桶算法 & 问题》 参考文献 《【算法】令牌桶算法》 概述 简介 TBA Token Bucket Algorithm 令牌桶算法是一种流行于网络通信领域的流量控制/频率限制算法。令牌…...

FFMPEG视频转图片

用FFMPEG视频转图片&#xff0c;并且for循环 import os import subprocess# 输入文件夹和输出文件夹路径 input_folder r"I:\xxx" output_base_folder r"D:\xxx\YOLO\data\video" output_subfolder_name "20240609"# 创建输出子文件夹 output…...

docker入门实践---虚拟机环境配置

文章目录 1.检查内核版本2.确定centos7可以上网3.关闭防火墙4.关闭防火墙5.更换阿里云6.安装gcc7.设置镜像仓库&#xff08;阿里云&#xff09;8更新软件包9.安装docket-ce10.启动docker11.普通用户权限设置 1.检查内核版本 2.确定centos7可以上网 3.关闭防火墙 下面的这个表示…...

java要防止重复序列化的问题JSON.toJSONString转义问题

要防止重复序列化的问题JSON.toJSONString(entity) 20241213 10:29 背景&#xff1a; 我在设计业务实现echart图标渲染&#xff0c;业务接口实时性查询耗时很长&#xff0c;为了提高系统可用性和用户体验&#xff0c;采用中间表的方案——即在中间表中存储大JSON。 但是在自测…...

TS的类型守卫、类型约束实践

类型守卫 // 基础类型判断 const arr [30, 50] console.log(typeof arr) // object const set new Set(arr) console.log(typeof set) // object const map new Map() console.log(typeof map) // objectclass Customer {constructor() {}buy(method:string) {console.log(…...

文件转曲,限制PDF文件编辑的最佳方案!

随着数字化进程的推进&#xff0c;PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用&#xff0c;成为了现代文档交流和存储的重要工具&#xff0c;满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多&#xff0c;常见的比如阅读、编辑、加密、转换、还可用于印刷…...

MySQL系列之数据授权(安全)

导览 前言Q&#xff1a;如何对MySQL数据库进行授权管理一、MySQL的“特权”1. 权限级别2. 权限清单 二、授权操作1. 查看权限2. 分配权限3. 回收权限 结语精彩回放 前言 看过博主上一篇的盆友&#xff0c;可以Get到一个知识点&#xff1a;数据授权&#xff08;eg&#xff1a;g…...

用 Python 实现经典的 2048 游戏:一步步带你打造属于你的小游戏!

用 Python 实现经典的 2048 游戏&#xff1a;一步步带你打造属于你的小游戏&#xff01;&#xff08;结尾附完整代码&#xff09; 简介 2048 是一个简单而又令人上瘾的数字拼图游戏。玩家通过滑动方块使相同数字的方块合并&#xff0c;目标是创造出数字 2048&#xff01;在这篇…...

Vue vs. React:两大前端框架的深度对比与分析(一)

前言 在当今快速发展的前端领域中&#xff0c;Vue和React作为两个备受瞩目的前端框架&#xff0c;已经成为许多开发者的首选。这两个框架凭借其出色的设计和强大的功能&#xff0c;在构建现代化、高效性能的Web应用方面扮演着重要角色。 Vue和React都以其独特的特点吸引了众多开…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...