蓝桥杯————23年省赛 ——————平方差
3.平方差 - 蓝桥云课
一开始看题我还没有意识到问题的严重性
我丢,我想 的是用两层循环来做,后来我试了一下最坏情况,也就是l=1 r = 1000000000
结果运行半天没运行出来,我就知道坏了,孩子们,要出事,结果又试了一下l = 1 r=1000
结果很快就出来了,我把r改成了10000 也出来了,改成1000000的时候就半天也算不出来,超级超时
package xunhuan;import java.util.Map;
import java.util.Scanner;/*** @author zb* date2025/3/17 15:57*/
public class L3502 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int l = in.nextInt();int r = in.nextInt();
// 统计满足条件的个数int cnt =0 ;// ijk分别代表三个数xyzfor (int i = 0; i <=r ; i++) {for (int j = i; j <=r ; j++) {long sum = (long) (j-i)*(j+i);
// 如果这个差值在l r的范围内就++if(sum>=l&&sum<=r){
// System.out.println(i);
// System.out.println(j);cnt++;}}}System.out.println(cnt);in.close();;}
}
奇怪的是一个点没有通过,真的有点奇怪呀,去看一下解析,我丢
去b站看了一下[蓝桥杯]真题讲解:平方差 (打表+数学)_哔哩哔哩_bilibili这个视频
我丢,我没有意识到 如果输入的数据1e9 意味着即使输出的复杂度为o(n也会超时)
所以要么用O(logn)复杂度输出要么用O(1)复杂度来解决,
O(1)的复杂度只能是你找到数学规律,也就是直接套公式得出答案
而O(logn)的话就只能通过降低复杂度来实现
这道题考察的是数学,直接枚举找规律,也叫打表
就是我先计算100以内的等于两个数的平方差的数有那些,下面用Java来实现
利用treeMap来实现便利100以内的等于两数平方差的数有那些,然后总结规律
package xunhuan;import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;/*** @author zb* date2025/3/17 15:57*/
public class L3502 {public static void main(String[] args) {Scanner in = new Scanner(System.in);// int l = in.nextInt();
// int r = in.nextInt();
// 统计满足条件的个数int cnt =0 ;Map<Integer,Integer> mp = new TreeMap<>();
// ijk分别代表三个数xyzfor (int i = 1; i <=100 ; i++) {for (int j = 0; j <=100 ; j++) {int sum = i*i - j* j;
// 如果这个差值在l r的范围内就++for (int k = 0; k <=100 ; k++) {if(sum==k){
// if(k%2==0){mp.put(k,0);
// }// if(mp){
//
// System.out.println(sum);
// }}}}}for (int key :mp.keySet()) {System.out.println(key);}
// System.out.println(cnt);in.close();;}
}

![]()
得到之后,我们发现,欸,好像奇数全都是,再看一下偶数,看偶数的话就把这里的注释去掉就行
偶数如图所示

你发现了什么是不是每一个偶数都是4的倍数(包括0)
你要是不信的话再试一下奇数如图所示

所以我们可以得出范围[l,r]之内的所有的奇数和4的倍数都是满足条件的
我们总结一下
区间【1,r】的奇数个数和偶数个数,因为l,r>=1
奇数:比如【1,3】 奇数 1 3 两个
【1,2】奇数个数1, 一个
是不是恰好等于(1+r)/2 不信的话再试一下
这里也可以理解为上取整
偶数个数的话:
【1,7】是不是只有一个数 是4
所以偶数个数是r/4
[1,r]的满足条件的个数为(r/4+(1+r)/2)
区间【1,l-1】的话是不是也是同理 ,奇数的个数直接把r换成l就行了4 的倍数不能动
【1,l-1】中满足条件的个数为((l)/4+(1+l-1)/2)
那么区间【l,r】之间的满足条件的个数是不是就等于区间【1,r】上面满足条件的个数减去【1,l-1】区间满足条件的个数
ok话不多上,我们直接整活儿
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;/*** @author zb* date2025/3/17 15:57*/
public class Main {public static void main(String[] args) {Scanner in =new Scanner(System.in);int l = in.nextInt();int r = in.nextInt();
// [1,r]之间的等于平方差的数字的个数 -[1,l-1]之间的等于平方差的数字的个数int sum = (1+r)/2+r/4 -((l)/2+l/4);System.out.println(sum);in.close();}
}

不好,孩子们,有一个点没过,不知道为啥
弄明白了
因为我们要求的是[1,l-1]之间的满足条件的偶数数量 应该是(l-1)/4而不是l/4
改不对了,我快疯了,啊啊啊啊
不是我想不明白为啥要改成long 啊,10的9次方int接收不了吗好逆天呀,这道题,我快疯了
package xunhuan;import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;/*** @author zb* date2025/3/17 15:57*/
public class L3502 {public static void main(String[] args) {Scanner in =new Scanner(System.in);Long l = in.nextLong();Long r = in.nextLong();
// [1,r]之间的等于平方差的数字的个数 -[1,l-1]之间的等于平方差的数字的个数Long num1 = (1+r)/2 -l/2;Long num2 = r/4 - (l-1)/4 ;System.out.println(num1+num2);in.close();}
}
整了我快3个小时了
在 Java 中,int 类型的最大值是 2^31-1 = 2,147,483,647。当输入的 R 接近或超过 1e9 时,虽然 R 本身小于 int 的最大值,但中间运算可能导致溢出。以下是关键分析:
1. 当 R 接近 int 最大值时的溢出问题
假设 R = 2,147,483,647(即 int 的最大值):
int R = 2_147_483_647;
int term = (R + 1) / 2; // R+1 = -2,147,483,648(溢出为负数)
2. 中间运算的溢出风险
在计算奇数的公式 (R + 1) / 2 - L / 2 中:
- 如果
R接近int最大值,R + 1会溢出到负数范围。 - 例如:
int R = 1_500_000_000; // 1.5e9
int term = (R + 1) / 2; // 750,000,000.5 → 取整为 750,000,000
3. 为何输入范围是 1e9 时仍可能出错?
题目规定输入 L 和 R 的范围是 [1, 1e9],而 1e9 远小于 int 的最大值 2,147,483,647。因此,理论上 int 足够存储输入值。但若代码中有其他操作(如中间运算或错误处理),可能导致意外溢出。
5. 总结
| 数据类型 | 优点 | 缺点 |
|---|---|---|
int | 节省内存 | 中间运算可能溢出 |
long | 避免溢出 | 内存占用略高 |
- 推荐使用
long:虽然题目输入范围在int内,但使用long更安全,避免潜在边界问题。 - 关键原则:在涉及大数运算时,优先使用
long或BigInteger。
相关文章:
蓝桥杯————23年省赛 ——————平方差
3.平方差 - 蓝桥云课 一开始看题我还没有意识到问题的严重性 我丢,我想 的是用两层循环来做,后来我试了一下最坏情况,也就是l1 r 1000000000 结果运行半天没运行出来,我就知道坏了,孩子们,要出事&#…...
一、串行通信基础知识
一、串行通信基础知识 1.处理器与外部设备通信有两种方式 并行通信:数据的各个位用多条数据线同时传输。(传输速度快,但占用引脚资源多。) 串行通信:将数据分成一位一位的形式在一条数据线上逐个传输。(线路…...
自带多个接口,完全免费使用!
做自媒体的小伙伴们,是不是经常为语音转文字的事儿头疼? 今天给大家推荐一款超实用的语音转文字软件——AsrTools,它绝对是你的得力助手! AsrTools 免费的语音转文字软件 这款软件特别贴心,完全免费,而且操…...
大数据学习(70)-大数据调度工具对比
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Qt QML解决SVG图片显示模糊的问题
前言 在QML中直接使用SVG图片,使用Image控件加载资源,显示出来图片是模糊的,很影响使用体验。本文介绍重新绘制SVG图片,然后注册到QML中使用。 效果图: 左边是直接使用Image加载资源显示的效果 右边是重绘后的效果 …...
【Linux我做主】基础命令完全指南上篇
Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…...
Designing Dashboards with SAP Analytics Cloud
Designing Dashboards with SAP Analytics Cloud...
项目实战系列:基于瑞萨RA6M5构建多节点OTA升级-系统设计<一>
项目背景 原嵌入式控制系统采用分布式模块化架构,由12个功能板卡(通信控制、信号采集、驱动执行等)组成。系统维护阶段存在以下痛点: 低效的本地烧录机制:各板卡固件升级需通过JTAG接口逐一手动连接JLINK仿真器&#x…...
hadoop集群配置-scp拓展使用
进行文件的拷贝:...
《AI大模型趣味实战》 No3:快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色/博客/聊天室/AI管家(下)
《AI大模型趣味实战》 No3:快速搭建一个漂亮的AI家庭网站-相册/时间线/日历/多用户/个性化配色/博客/聊天室/AI管家(下) 摘要 本文介绍了家庭网站V1.3版本的更新内容,主要聚焦于AI管家功能的优化与完善。V1.3版本对AI管家模块进行了全面升级࿰…...
华为OD机试 - 创建二叉树(Java 2024 E卷 200分)
题目描述 给定一系列树状结构操作的问题,通过 Q 次查询还原树结构并输出结果。题目要求实现一个类 Solution,其方法 recoverTree 需要根据输入的操作数组 operations 还原树的结构,并返回树的根节点。每个操作 operations[i] [height, inde…...
c++基础知识-图论进阶
一、拓扑排序 1、基础知识 1)什么是拓扑排序 对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若,则u在线性序列中出现在v之前。 2)拓扑排序的操作方法 重复执行…...
[Java实战]Spring Boot服务CPU 100%问题排查:从定位到解决
Spring Boot服务CPU 100%问题排查:从定位到解决 1. 引言 当Spring Boot服务出现CPU占用率100%时,系统性能会急剧下降,甚至导致服务不可用。本文将通过真实代码案例,详细讲解如何快速定位问题根源,并提供解决方案。无…...
1.6 极限存在准则
1.夹逼定理(迫敛定理) 1.1 数列型 1.1.1 准则 1.2 函数型 2. 两个重要极限...
Fisher信息、梯度方差与学习率调度器的计算流程
Fisher信息、梯度方差与学习率调度器的计算流程 目录 Fisher信息、梯度方差与学习率调度器的计算流程**步骤1:定义模型与数据集****步骤2:计算梯度与Fisher信息****步骤3:计算梯度方差****步骤4:定义学习率调度器****步骤5:参数更新流程****示例输出****关键概念说明**步骤…...
Model Context Protocol 的生命周期
生命周期阶段 生命周期分为三个主要阶段: 初始化阶段 (Initialization) 客户端与服务器建立协议版本兼容性。交换并协商能力。分享实现细节。客户端必须发送 initialize 请求,包含支持的协议版本、客户端能力和客户端实现信息。服务器必须响应其自身能力…...
Go语言中的错误处理与异常恢复:性能对比与实践思考
Gone是一款轻量级Go依赖注入框架,通过简洁的标签声明实现自动组件管理。它提供零侵入设计、完整生命周期控制和极低运行时开销,让开发者专注于业务逻辑而非依赖关系处理。 项目地址: https://github.com/gone-io/gone 文章目录 Go的错误处理哲…...
CSS 属性选择器详解
CSS 属性选择器详解 引言 CSS(层叠样式表)是网页设计中的重要组成部分,它用于控制网页元素的样式和布局。属性选择器是CSS选择器的一种,它允许开发者根据元素的特定属性来选择和样式化元素。本文将详细讲解CSS属性选择器的概念、语法以及常用属性选择器的使用方法。 一、…...
大华SDK协议在智联视频超融合平台中的接入方法
一. 大华SDK协议详解 (一)、大华SDK协议概述 大华SDK(Software Development Kit)协议是大华股份为开发者提供的一套软件开发工具包,旨在帮助开发者快速集成大华设备(如摄像头、NVR、DVR等)的功…...
卓越的用户体验需要智能内容
摘要:这篇文章指出静态文档已无法满足现代用户的需求,而智能内容则是构建卓越用户体验的关键。文章从智能内容的定义、优势和实际应用等方面进行了详细阐述,并强调了企业应积极拥抱智能内容,以提升客户满意度、降低成本并创造新的…...
【蓝桥杯】1124修建公路1(Kruskal算法)
思路 找到能够连通所有城市的最小树即可,可用Prim或Kruscal。 !!注意,m的范围是包括0的,可就是包含没有道路的情况,要单独输出0 code import os import sys# 输入 n,m map(int,input().split()) road …...
传感云揭秘:边缘计算的革新力量
在当今快速发展的科技时代,传感云和边缘计算系统正逐渐成为人们关注的焦点。传感云作为物联网与云计算的结合体,通过虚拟化技术将物理节点转化为多个服务节点,为用户提供高效、便捷的服务。而边缘计算则是一种靠近数据源头或物端的网络边缘侧…...
Bigemap Pro 的三种地图下载方式
地图下载通常是是最基础但也最重要的任务之一,无论是进行空间分析、制作专题地图,还是进行数据可视化,高质量的地图数据都是不可或缺的。Bigemap Pro提供了三种地图下载方式,分别适用于不同的场景和需求。无论是免费版用户还是专业…...
Python直方图:从核密度估计到高维空间解析
一、直方图的核心原理与数学本质 数据分布的视觉解码器 直方图(Histogram)是数据科学家的"分布显微镜",通过将连续数据划分为等宽区间(Bin),统计各区间的频数/频率,用相邻矩形条直观…...
0基础 | 恒流源专题
目录 tip1:低端反馈编辑 tip2: 恒流源电路的设计注意事项 tip3:三极管输出恒定电流受运放输出电流控制 tip4:高端反馈 基本逻辑: 当负端Vref不输入电压时, 当负端Vref输入电压时 tip1:低端反馈 判…...
Cannl 数据同步-ES篇
Cannl 数据同步 目录 Cannl 数据同步一、概述1、简介2、原理3、模块 二、配置MySQL1、使用版本使用版本 2、环境要求1)操作系统2)MySQL要求 三、配置Canal-server1、下载安装2、**修改配置****单机配置****集群配置****分库分表配置** 四、配置canal-ada…...
Webpack 前端性能优化全攻略
文章目录 1. 性能优化全景图1.1 优化维度概览1.2 优化效果指标 2. 构建速度优化2.1 缓存策略2.2 并行处理2.3 减少构建范围 3. 输出质量优化3.1 代码分割3.2 Tree Shaking3.3 压缩优化 4. 运行时性能优化4.1 懒加载4.2 预加载4.3 资源优化 5. 高级优化策略5.1 持久化缓存5.2 模…...
时间序列分析的军火库:AutoTS、Darts、Kats、PaddleTS、tfts 和 FancyTS解析
引言:时间序列分析的现代挑战 时间序列分析在多个领域中扮演着关键角色,包括工程、金融、气象、工业预测等。随着开源工具的快速发展,开发者可以通过多种库快速实现时间序列预测与分析。本文将对 AutoTS、Darts、Kats、PaddleTS、tfts 和 FancyTS 六大主流库进行详细解析,…...
MySQL意向锁我该怎么理解?
在MySQL中,意向锁(Intention Lock)是一种用于协调不同粒度锁(如表锁和行锁)的机制,其核心目的是在保证数据一致性的同时提高并发性能。以下是关于意向锁的详细解析: 一、意向锁的作用 意向锁的…...
Linux 操作系统简介
Linux 操作系统 Linux 是一种自由和开源的操作系统,最初由芬兰的 Linus Torvalds 在1991年创建。它是一个类 Unix 操作系统,广泛用于服务器、个人电脑和嵌入式设备。Linux 操作系统的核心是 Linux 内核,其周围构建了各种工具和应用程序&…...
