[蓝桥杯 2023 省 A] 平方差

题目链接

[蓝桥杯 2023 省 A] 平方差

题目描述

给定 L , R L,R L,R,问 L ≤ x ≤ R L \leq x \leq R LxR 有多少个 x x x 满足存在整数 y , z y,z y,z 使得 x = y 2 − z 2 x = y^2 - z^2 x=y2z2

输入格式

输入一行包含两个整数 L , R L,R L,R,用一个空格分隔。

输出格式

输出一行包含一个整数满足题目给定条件的 x x x 的数量。

输入输出样例
输入

1 5

输出

4

说明/提示
  • 1 = 1 2 − 0 2 1 = 1^2 - 0^2 1=1202
  • 3 = 2 2 − 1 2 3 = 2^2 - 1^2 3=2212
  • 4 = 2 2 − 0 2 4 = 2^2 - 0^2 4=2202
  • 5 = 3 2 − 2 2 5 = 3^2 - 2^2 5=3222
数据范围
  • 1 ≤ L , R ≤ 1 0 9 1 \leq L,R \leq 10^9 1L,R109

解法:数学 + 找规律

对于原式 x = y 2 − z 2 x = y^2 - z^2 x=y2z2,可以转换为 x = ( y + z ) ( y − z ) x = (y + z)(y-z) x=(y+z)(yz),令 a = y + z , b = y − z a = y + z, b = y - z a=y+z,b=yz,即 x = a × b x = a \times b x=a×b

因为 a − b = ( y + z ) − ( y − z ) = 2 z a - b = (y + z) - (y - z) = 2z ab=(y+z)(yz)=2z

所以 a a a b b b 之差一定是偶数,所以 a , b a ,b a,b 只能是 奇数和奇数 或者 偶数和偶数

1. a , b a,b a,b 都是 奇数 的情况:
a , b a,b a,b 都是奇数,那么 a × b a \times b a×b 也是奇数,所以 x x x 也是奇数,那么 [ L , R ] [L,R] [L,R] 范围内的奇数都满足条件。

2. a , b a,b a,b 都是 偶数 的情况:
a , b a,b a,b 都是偶数,那么 a × b a \times b a×b 也是偶数并且是 4 4 4 的倍数,所以 x x x 也是 4 4 4 的倍数,那么 [ L , R ] [L,R] [L,R] 范围内的 4 4 4 的倍数都满足条件。

如果要求 [ 1 , n ] [1,n] [1,n] 范围内的 奇数 个数,那就是 ⌈ n 2 ⌉ \lceil \frac{n}{2} \rceil 2n

举例,有 n u m s [ 9 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } nums[9] = \{ 1,2,3,4,5,6,7,8,9 \} nums[9]={1,2,3,4,5,6,7,8,9},那么奇数个数就为 ⌈ 9 2 ⌉ = 5 \lceil \frac{9}{2} \rceil = 5 29=5

如果要求 [ 1 , n ] [1,n] [1,n] 范围内的 4的倍数 个数,那就是 ⌊ n 4 ⌋ \lfloor \frac{n}{4} \rfloor 4n

举例,有 n u m s [ 9 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } nums[9] = \{ 1,2,3,4,5,6,7,8,9 \} nums[9]={1,2,3,4,5,6,7,8,9},那么4的倍数个数就为 ⌊ 9 4 ⌋ = 2 \lfloor \frac{9}{4} \rfloor = 2 49=2

如此我们就可以定义一个函数 f u n ( i ) fun(i) fun(i),求出 [ 1 , i ] [1,i] [1,i] 区间内所有满足条件的 x x x 的数量 ,最终返回的答案就是 f u n ( R ) − f u n ( L − 1 ) fun(R) - fun(L-1) fun(R)fun(L1)

时间复杂度: O ( 1 ) O(1) O(1)

C++代码:

#include <iostream>using namespace std;int fun(int x){return (x + 1) / 2 + x / 4;
}int main(){int l, r;cin>>l>>r;int ans = fun(r) - fun(l - 1);cout<<ans<<'\n';
}

Java代码:

import java.util.*;
import java.io.*;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static int n;public static int fun(int x) {return (x + 1) / 2 + x / 4;}public static void main(String[] args) throws Exception {int l;int r;String[] str = in.readLine().split(" ");l = Integer.parseInt(str[0]);r = Integer.parseInt(str[1]);int ans = fun(r) - fun(l - 1);System.out.println(ans);}
}

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

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

相关文章

BUUCTF-Misc3

LSB1 1.打开附件 得到一张图片&#xff0c;像是某个大学的校徽 2.Stegsolve工具 根据标题LSB&#xff0c;可能是LSB隐写 放到Stegsolve中&#xff0c;点Analyse在点Data Extract 数据提取 因为是LSB隐写&#xff0c;发现含以.png结尾的图片 3.保存图片 4.得到flag 扫描二维…

一招教你优化TCP提高大文件传输效率

在当今企业的数据传输实践中&#xff0c;传统的传输控制协议&#xff08;TCP&#xff09;在处理大型文件传输时&#xff0c;其固有的可靠性和复杂性有时会导致效率不足。为了提升大文件传输的效率&#xff0c;对TCP进行优化成为了一个关键任务。 TCP传输的可靠性是其核心优势&a…

IoT技术有什么好处——青创智通

​随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;技术已经逐渐渗透到各个领域&#xff0c;特别是在企业运营中&#xff0c;其应用越来越广泛。那么&#xff0c;企业运用IoT到底有什么好处呢&#xff1f;本文将从提高效率、降低成本、创新商业模式、提升客户…

UnityShader常用算法笔记(颜色叠加混合、RGB-HSV-HSL的转换、重映射、UV序列帧动画采样等,持续更新中)

一.颜色叠加混合 1.Blend混合 // 正常&#xff0c;透明度混合 Normal Blend SrcAlpha OneMinusSrcAlpha //柔和叠加 Soft Additive Blend OneMinusDstColor One //正片叠底 相乘 Multiply Blend DstColor Zero //两倍叠加 相加 2x Multiply Blend DstColor SrcColor //变暗…

聊聊 HTTP 性能优化

哈喽大家好&#xff0c;我是咸鱼。 作为用户的我们在 “上网冲浪” 的时候总是希望快一点&#xff0c;尤其是抢演唱会门票的时候&#xff0c;但是现实并非如此&#xff0c;有时候我们会遇到页面加载缓慢、响应延迟的情况。 而 HTTP 协议作为互联网世界的基础&#xff0c;从网…

穷人想赚钱该怎么选打工VS创业?2024年如何把握新机遇?

在贫穷的困境中&#xff0c;打工与创业似乎成为了两条截然不同的道路&#xff0c;摆在每一个渴望改变命运的人面前。然而&#xff0c;这并非简单的选择题&#xff0c;而是一场关于勇气、智慧与机遇的较量。打工&#xff0c;对于许多人来说&#xff0c;是稳定且相对安全的收入来…

【TypeScript系列】类

类 背景阅读&#xff1a;类&#xff08;MDN&#xff09; TypeScript 对 ES2015 引入的 class 关键字提供了全面支持。 与其他 JavaScript 语言特性一样&#xff0c;TypeScript 添加了类型注解和其他语法&#xff0c;使你能够表达类和其他类型之间的关系。 类成员 下面是一个…

Aigtek前置微小信号放大器有什么作用

前置微小信号放大器是一种被广泛应用于无线通信、雷达、射频等领域中的低噪声放大器。相较于传统的放大器&#xff0c;前置微小信号放大器具有更高的灵敏度和更低的噪声系数。下面安泰Aigtek将介绍前置微小信号放大器的作用和意义。 一、前置微小信号放大器的作用 放大弱信号 前…

【golang】二叉树的遍历

本文使用golang实现二叉树的遍历&#xff0c;包含以下7种方法。 深度优先遍历 先序遍历 递归法非递归法 中序遍历 递归法非递归法 后序遍历 递归法非递归法 广度优先遍历 二叉树节点定义&#xff1a; type Node struct {Val intLeft *NodeRight *Node }深度优先遍历 先…

C语言实现回调函数

C语言实现回调函数 一、回调函数概念1.1 什么叫函数指针 二、回调函数案例 一、回调函数概念 回调函数就是一个被作为参数传递的函数。在C语言中&#xff0c;回调函数只能使用函数指针实现&#xff0c;在C、Python、ECMAScript等更现代的编程语言中还可以使用仿函数或匿名函数…

IDEA启动项目读取nacos乱码导致启动失败

新安装的2023社区版IDEA,启动项目报错。 forest: interceptors: - com.gdsz.b2b.frontend.api.Interceptors.ApiInterceptor org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 at org.yaml.snakeyaml.reader.S…

Java面试题总结10之MySQL索引和锁

索引的基本原理 把无需的数据变成有序的查询 1&#xff0c;把创建了索引的列的内容进行排序 2&#xff0c;对排序结果生成倒排表 3&#xff0c;到倒排表内容上拼上数据地址链 4&#xff0c;在查询的时候&#xff0c;先拿到倒排表内容&#xff0c;再取出数据地址链&#xf…

error: cannot bind non-const lvalue reference of type 解决方法

error: cannot bind non-const lvalue reference of type 解决方法 问题来源解决方法 问题来源 使用direct_visual_lidar_calibration时需要安装Iridescence 编译时出现如下错误 /home/flipper/iridescence/src/glk/glsl_shader.cpp:289:36: error: cannot bind non-const lv…

7-3 前世档案(Python)

网络世界中时常会遇到这类滑稽的算命小程序&#xff0c;实现原理很简单&#xff0c;随便设计几个问题&#xff0c;根据玩家对每个问题的回答选择一条判断树中的路径&#xff08;如下图所示&#xff09;&#xff0c;结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…

基于Leatlet标注Geojson下载器实现

在上一篇文章中&#xff0c;我们学习了Leaflet的基础知识&#xff0c;包括如何创建地图、添加图层等。在本文中&#xff0c;我们将深入学习Leaflet中标注的创建和管理&#xff0c;包括如何添加标注、自定义标注图标、创建图层组、批量添加和删除标注、为标注添加属性和弹出框等…

手机卡丢失了怎么办?挂失与补办全攻略来了

现在人人都离不开手机&#xff0c;手机改变了我们的生活&#xff0c;但是有时我们可能会遇到手机卡丢失或被盗的情况。这时&#xff0c;及时挂失并补办新的手机卡至关重要&#xff0c;以确保个人信息安全和通信畅通。这里小编将为您提供详细的手机卡挂失与补办流程指南&#xf…

day38 动态规划part1

509. 斐波那契数 简单 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;…

VS配置开发与远程调试笔记

先简单写一下&#xff0c;后续详细补充 场景&#xff1a;本地机器开发&#xff0c;虚拟机调试 准备工作&#xff1a; 由于要将生成的文件生成在虚拟机&#xff0c;避免反复拷贝&#xff0c;直接配置虚拟机共享文件夹进行写入&#xff0c;步骤如下&#xff1a; 虚拟机打开网…

Vue3:ref和reactive实现响应式数据

一、情景说明 在Vue2中&#xff0c;我们已经知道数据的响应式&#xff0c;是什么含义 就是&#xff0c;在data块中&#xff0c;定义的变量&#xff0c;在页面中引用后 任何地方修改了该变量&#xff0c;页面中引用的变量会立即显示最新数值。 这块&#xff0c;我们学习了 插值…

Leetcode : 1122. 数组的相对排序

思路&#xff1a;计数排序&#xff0c;然后根据计数的数组序列重构数组&#xff0c;针对多余的数组元素采取sort函数进行升序排列加在末尾即可。 #include <iostream> #include <vector> #include <algorithm>using namespace std;class Solution { public:v…