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

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录

一、输入的三种方式

1.最常见的Scanner的输入方法

2.数据多的时候常用BufferedReader快读

3.较麻烦的StreamTokenizer快读(用的不多)

StreamTokenizer常见错误:

二、min和max值的设置

 三、妮妮的翻转游戏

四、小明和完美序列

五、顺子日期(填空题)

六、星期计算(填空题)

七、山


推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

 


一、输入的三种方式

1.最常见的Scanner的输入方法

Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = scan.nextInt();
System.out.print(n+" "+m);

2.数据多的时候常用BufferedReader快读

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strings = br.readLine().split(" ");
int n = Integer.parseInt(strings[0]);
int m = Integer.parseInt(strings[1]);
System.out.print(n+" "+m);

3.较麻烦的StreamTokenizer快读(用的不多

对于读取字符类型的操作,只能读取26个字母,特殊符号和数字无法读取,有其局限性

因为他使用起来比较麻烦,所以可以封装一个对象,减少代码量

//封装的对象
static class Read {StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public int nextInt() throws Exception {st.nextToken();//读取数据return (int)st.nval;//默认存储的是double类型}public String readLine() throws Exception {//有局限,慎用st.nextToken();return st.sval;}}public static void main(String[] args) throws Exception {Read read = new Read();int n = read.nextInt();System.out.print(n);
}

StreamTokenizer常见错误:

(1)StreamTokenizer读入long类型的数字时会出现错误

因为nval的类型是double,在转换为long类型的过程中,double类型能表示的数字范围比long大,但是是以牺牲精度的方式获得更大的存储,而他能精确保存的数字位数为十进制的15或16位,要比long小

由图可以看见,double类型在存储时,牺牲了精度,导致结果不准确

(2)StreamTokenizer读入太长的字符串时也会有问题 


二、min和max值的设置

min设为最大值(以及这样设的易错点),max设为最小值,求和初始值为0,求积初始值为1简单理解这样设的原理,min要存储最小值,我们在给min设初始值的时候不能影响我的最终结果,那我肯定不能设一个小的值,假设设为0,那么输入是1234,这样你的min输出的是几?自然是0,但实际最小值是1,这是因为我们的初始值,影响到了答案,所以要设一个题目中的最大值或者设一个不会出现的最大值也行。

一般都这样设置:int min = Integer.MAX_VALUE

但是也存在一定的弊端:

如果遇到了以下代码if(min+a>b),类似这种判断很容易出现问题,本身min是整数类型的最大值,它在加上a,很可能爆int直接变成负数,那么就会导致判断出错。这样写的时候可以加一个判断if(min!=Integer.MAX_VALUE&&min+a>b)。


 三、妮妮的翻转游戏

import java.util.*;public class 妮妮的翻转游戏 {public static void main(String[] args) {Scanner s = new Scanner(System.in);int n = s.nextInt();//解法1:if else语句		if(n==0) System.out.print(1);else System.out.print(0);//解法2:异或(找不同)System.out.print(n^1);//解法3:取反System.out.print(~n+2);//~n=-n-1//解法4:三目运算符System.out.print(n==1?0:1);}
}

四、小明和完美序列

思路1:只看删除

eg:对于3这个数字,如果3的个数<3,那么就需要全删;如果3的个数>3,那么就需要删到3个

因为本题每个数字都有一个对应的值,所以可以考虑map(key,value) (用数组时间会超时)

那么如果3的个数<3,那么就删value次;如果3的个数>3,那么就需要删value-key次

import java.util.*;public class 小明和完美序列 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();HashMap<Integer,Integer> map = new HashMap<>();//输入数据并放入mapfor(int i=0;i<n;i++) {int a = scan.nextInt();
//			if(!map.containsKey(a)) {//第一次放入,value置为1
//				map.put(a, 1);
//			}else {
//				map.put(a, map.get(a)+1);//非第一次放入,value+1
//			}//这一行可以代替上面,getOrDefault方法map.put(a, map.getOrDefault(a, 0)+1);}int count = 0;//要删除的次数for(Integer e : map.keySet()) {//从map中遍历每个keyif(map.get(e)>e) {//相当于>3次count+=map.get(e)-e;} else if(map.get(e)<e) {//相当于<3次count+=map.get(e);}}System.out.print(count);}
}

思路2:看保留(找到本来需要保留的个数m和现有的总次数n,删除的次数count=n-m)

但是注意:只有value>=key的时候才进行保留

import java.util.*;public class 小明和完美序列 {public static void main(String[] args) { Scanner scan = new Scanner(System.in);int n = scan.nextInt();HashMap<Integer,Integer> map = new HashMap<>();for(int i=0;i<n;i++) {int a = scan.nextInt();map.put(a, map.getOrDefault(a, 0)+1);}int sum = 0;//要保留的次数for(Integer e:map.keySet()) {if(map.get(e)>=e) {sum+=e;}}System.out.print(n-sum);}
}

五、顺子日期(填空题)

思路1:手写日期模拟器 注意闰年

public class 顺子日期 {static int year=2022,month=1,day=1;static int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//注意2月public static void main(String[] args) {//手写日期模拟器自动生成下一个日期Scanner scan = new Scanner(System.in);int count = 0;//顺子日期的个数while(year!=2023) {if(check()) {//判断是否满足顺子日期count++;}day++;if(month==2) {//闰年29天特殊考虑if(year%400==0||(year%4==0&&year%100!=0)) {if(day>29) {month++;day=1;}}else {if(day>28) {month++;day=1;}}}else {if(day>days[month]) {//day超过了本月的天数范围month++;day=1;}}if(month==13) {//month超过了12year++;month=1;}}System.out.print(count);}//判断是否满足顺子日期private static boolean check() {//数字形式int num = 0;num += year;num =num*100+month;num =num*100+day;//转为字符串的形式String string = String.valueOf(num);//正式开始判断:思路如果后面一个字符是前面字符+1那么就step++,直到step到3int step = 1;for(int i =1;i<string.length();i++) {if(string.charAt(i-1)+1==string.charAt(i)) {step++;} else {step=1;//不是顺子重新开始}//如果step到3就是顺子日期if(step==3) {return true;}}return false;}
}

思路2:java自带的日期函数

(1)用到了Calendar calendar = Calendar.getInstance();的set和get方法

注意set方法中的bug:month是从0开始的

(2)用到了SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//规范日期的写法

//方法2:java自带的日期函数
public class 顺子日期 {public static void main(String[] args) {String [] seq = {"012","123"};//day不可能为4-9Calendar calendar = Calendar.getInstance();calendar.set(2022, 0,1);//为什么月要初始化为0:这里相当于一个bug,这个函数月就是从0开始的SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//规范日期的写法int count = 0;//开始统计顺子日期的数目while(calendar.get(calendar.YEAR)==2022) {//取出calendar中的年份String date = sdf.format(calendar.getTimeInMillis());//让date规范为yyyyMMdd//遍历字符串看有没有这个可能存在的顺子for(String s:seq) {if(date.contains(s)) {count++;break;//有两个顺子也算一个日期,count只能加一次}}calendar.add(calendar.DATE, 1);//日期+1}System.out.print(count);}
}

六、星期计算(填空题)

20的22次方已经超过了long类型的范围

解法1:BigInteger类(这个类在java中可以表示任意大小的整数,没有固定的范围限制)

import java.math.BigInteger;public class 星期计算 {public static void main(String[] args) {BigInteger bigInteger = new BigInteger("20");//运算类型都得是BigInteger类型BigInteger n = bigInteger.pow(22).mod(new BigInteger("7"));System.out.print(n);}
}

得到的答案是1,那么结果直接输出7即可

解法2: 数学方法:(a*b)%p=(a%p*b%p)%p

int mod7 = 1;
for(int i=1;i<=22;i++) {mod7 = (mod7*20)%7;//每一次次方都%7
}
System.out.print(mod7);

七、山(填空题)

思路:回文&&单调性

//思路:回文判断+单调性判断(这样就只用判断一边)
public class 山 {public static void main(String[] args) {int n = 0;for(int i=2022;i<=2022222022;i++) {if(huiwen(i)&&dandiao(i)) {n++;}}System.out.print(n);}//判断单调性private static boolean dandiao(int n) {int[] a = new int[10];int i=0;while(n>0) {a[i++] = n%10;n =n/10;}int l=i/2;for(int j=1;j<=l;j++) {if(a[j]<a[j-1]) {return false;}}return true;}//回文判断:思路前后指针遍历,看是不是一样public static boolean huiwen(int n) {int[] a = new int[10];int i =0;//把数字放入数组while(n>0) {a[i++] = n%10;n =n/10;}int l=0,r=i-1;while(l<r) {if(a[l]!=a[r]) {return false;}l++;r--;}return true;}
}

相关文章:

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录 一、输入的三种方式 1.最常见的Scanner的输入方法 2.数据多的时候常用BufferedReader快读 3.较麻烦的StreamTokenizer快读&#xff08;用的不多&#xff09; StreamTokenizer常见错误&#xff1a; 二、min和max值的设置 三、妮妮的翻转游戏 四、小明和完美序列 五…...

半小时到秒级,京东零售定时任务优化怎么做的?

导言&#xff1a; 京东零售技术团队通过真实线上案例总结了针对海量数据批处理任务的一些通用优化方法&#xff0c;除了供大家借鉴参考之外&#xff0c;也更希望通过这篇文章呼吁大家在平时开发程序时能够更加注意程序的性能和所消耗的资源&#xff0c;避免在流量突增时给系统…...

stm32——hal库学习笔记(ADC)

这里写目录标题 一、ADC简介&#xff08;了解&#xff09;1.1&#xff0c;什么是ADC&#xff1f;1.2&#xff0c;常见的ADC类型1.3&#xff0c;并联比较型工作示意图1.4&#xff0c;逐次逼近型工作示意图1.5&#xff0c;ADC的特性参数1.6&#xff0c;STM32各系列ADC的主要特性 …...

一周学会Django5 Python Web开发-Http请求HttpRequest请求类

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…...

element el-date-picker 日期组件置灰指定日期范围、禁止日期范围日期选择

JS如何将当前日期或指定日期转时间戳_javascript技巧_脚本之家 小于指定日期前的日期置灰 比如这里 指定日期是 2024-02-20 10:48:15 disabledDate(time) time是一个函数提供的时间用于比较 他是一个时间戳↓ 理解为我们想要置灰的时间 time.getTime() < timeStamps- 1 *…...

202434读书笔记|《繁星·春水》——残花缀在繁枝上,鸟儿飞去了,撒得落红满地,生命也是这般的一瞥么?

202434读书笔记|《繁星春水》——残花缀在繁枝上&#xff0c;鸟儿飞去了&#xff0c;撒得落红满地&#xff0c;生命也是这般的一瞥么&#xff1f; 繁星春水 《繁星春水》冰心著&#xff0c;共300多首小诗&#xff0c;并不是惊艳&#xff0c;就那么平凡而朴实的看完了。 繁星 黑…...

Golang 关于 interface 接口的理解

package mainimport "fmt"// 定义一个存储器接口&#xff1a;支持mysql存储、redis存储 type StorageManager interface {insert(data string) int // 增加update(id int, data string) int // 更新 }// 实现一个Mysql存储器 type Mysql struct{}func (mysql…...

SQL注入漏洞解析--less-7

我们先看一下第七关 页面显示use outfile意思是利用文件上传来做 outfile是将检索到的数据&#xff0c;保存到服务器的文件内&#xff1a; 格式&#xff1a;select * into outfile "文件地址" 示例&#xff1a; mysql> select * into outfile f:/mysql/test/one f…...

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…...

云计算新宠:探索Apache Doris的云原生策略

文章目录 Apache Doris 特性极简架构高效自运维高并发场景支持MPP 执行引擎明细与聚合模型的统一便捷数据接入 Apache Doris 极速 1.0 时代极速列式内存布局向量化的计算框架Cache 亲和度虚函数调用SIMD 指令集 稳定多源 关于 Apache Doris 开源社区基于云原生向量数据库Milvus…...

【PHP设计模式08】装饰模式

【装饰模式】 装饰模式,又称装饰器模式 或 装饰者模式 或 油漆工模式,通过创建一个“装饰对象”,在不改变原有类和使用继承的情况下,动态地扩展一个对象的功能,比直接生成子类继承更加灵活,可以通过多个不同的具体装饰类,创建多个不同的行为组合。 结构: 抽象构件…...

寒假作业Day 01

这个项目主要是为了复习博主之前关于C语言和数据结构的寒假作业&#xff0c;大家也可以根据这些题目自己进行填写并检查自己的知识点是否过关 博主也会有错误&#xff0c;所以如果大家看到错误&#xff0c;也希望大家能够进行指正&#xff0c;谢谢大家&#xff01; Day 01 一…...

学习JAVA的第四天(基础)

目录 方法 方法的定义 方法的调用 参数 注意事项 方法的重载 练习 面向对象 类和对象 定义类的注意事项 封装 private关键字 this关键字 构造方法 标准的Javabean类 创建一个对象时&#xff0c;虚拟机做了什么&#xff1f; 方法 方法含义&#xff1a;方法是程序…...

拉美巴西阿根廷媒体宣发稿墨西哥哥伦比亚新闻营销如何助推跨境出海推广?

【本篇由言同数字科技有限公司原创】拉美地区是一个巨大的市场&#xff0c;其中包括了许多国家&#xff0c;如巴西、阿根廷、智利、哥伦比亚等。这些国家的消费者对品牌的认知度和忠诚度不同&#xff0c;而且市场环境也存在着很大的差异。因此&#xff0c;品牌需要通过跨境海外…...

SpringMVC 学习(九)之拦截器

目录 1 拦截器介绍 2 创建一个拦截器类 3 配置拦截器 1 拦截器介绍 在 SpringMVC 中&#xff0c;拦截器 (Interceptor) 是一种用于拦截 HTTP 请求并在请求处理之前或之后执行自定义逻辑的组件。拦截器可以用于实现以下功能&#xff1a; 权限验证&#xff1a;在请求处理之前…...

TCP/IP-常用网络协议自定义结构体

1、TCP/IP模型&#xff1a; 2、TCP/IP- 各层级网络协议&#xff08;从下往上&#xff09;&#xff1a; 1&#xff09;数据链路层&#xff1a; ARP: 地址解析协议&#xff0c;用IP地址获取MAC地址的协议&#xff0c;通过ip的地址获取mac地 …...

内部控制提纲

当然&#xff0c;以下是一个更详细的关于内部控制的论文提纲&#xff1a; 一、引言 1.1 内部控制的定义与重要性 解释内部控制的基本概念和它在企业管理中的作用阐述内部控制对企业风险管理和运营效率的影响 1.2 内部控制的目标与原则 列出内部控制的主要目标&#xff0c;…...

江科大stm32 定时器 TIM输出比较--学习笔记

这几天遇到输出比较相关的问题&#xff0c;于是来学习下TIM输出比较部分知识点&#xff01; 输出比较简介 CNT是计数器的值&#xff0c;CCR寄存器是捕获/ 比较寄存器 简单的讲&#xff0c;输出比较就是用来输出PWM波形。 PWM简介 占空比&#xff1a;高电平占一个周期的比例。…...

VHDL-2008语言支持

VHDL-2008语言支持 介绍 AMD Vivado™合成支持VHDL-2008标准的可合成子集。这个以下部分介绍了支持的子集以及使用它的过程。将Vivado设置为使用VHDL-2008有几种方法可以使用Vivado运行VHDL-2008文件。您可以转到源文件属性窗口&#xff0c;并从可用文件类型的下拉列表中设置…...

linux系统git的安装和配置

安装和配置 安装gitYum安装Git编译安装 运行 Git 前的配置配置git命令集配置过程 获取帮助 安装git Yum安装Git yum install git -y编译安装 编译安装可以安装较新版本的git Git下载地址&#xff1a; https://github.com/git/git/releases # 安装依赖关系 yum install curl-d…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...