news 2026/4/16 17:15:57

牛客题解-小红的区间查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
牛客题解-小红的区间查询

链接:https://ac.nowcoder.com/acm/contest/128186/A
来源:牛客网

题目描述

\hspace{15pt}小红拿到了两个整数 a,b(a<b)a,b\left(a < b\right)a,b(a<b)。现在她想知道 [l,r]\left[l,r \right][l,r] 内有多少元素 xxx 满足 x−ax - ax−a 是 x−bx-bx−b 的倍数,请你帮帮她。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≦T≦105)T\left(1\leqq T\leqq 10^5\right)T(1≦T≦105) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入四个整数 a,b,l,r(1≦a<b≦2×105,b<l≦r≦109)a,b,l,r\left(1\leqq a<b\leqq2\times 10^5,b< l\leqq r\leqq10^9\right)a,b,l,r(1≦a<b≦2×105,b<l≦r≦109)。

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。输出一个整数,代表区间内符合条件的元素的数量。

示例1

输入

复制3 1 2 3 4 1 5 6 10 114 514 515 1000000000

3 1 2 3 4 1 5 6 10 114 514 515 1000000000

输出

复制1 3 15

1 3 15

说明

对于第一组数据,符合条件的元素仅有 333。

对于第二组数据,符合条件的元素有 6,7,96,7,96,7,9。

问题分析

条件:(x−a)%(x−b)==0

设 k=x−b ,则 x−a=k+(b−a)

条件变为:(k+(b−a))%k==0 ,即 (b−a)%k==0

所以 k 必须是 (b−a) 的约数,且 k=x−b>0 (因为 x>b ,由 b<l≤x 保证)

因此:x=b+d ,其中 d 是 (b−a) 的正约数

////暴力枚举(TLE) //#include <bits/stdc++.h> //using namespace std; //typedef long long ll; // //int main() //{ // ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // int t; // cin >> t; // while(t--) // { // ll a, b, r, l, x, sum=0; // cin >> a >> b >> l >> r; // x = l; // while(x <= r) // { // if((x-a) % (x-b) == 0) // { // sum++; // //cout << "x =" << x << '\n'; // } // x++; // } // cout << sum <<'\n'; // } //} #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while(t--) { ll a, b, l, r; cin >> a >> b >> l >> r; ll diff = b - a; ll sum = 0; for(ll i = 1; i * i <= diff; i++) { if(diff % i == 0) { ll x1 = b + i; if(x1 >= l && x1 <= r) sum++; if(i * i != diff) { ll x2 = b + diff / i; if(x2 >= l && x2 <= r) sum++; } } } cout << sum << '\n'; } }

注意:

(b-a) % k = 0 -> b-a = n(x-b) -> x = (b-a)/n + b

n 有两个解:

  • 小的那个 n1 ≤diff​

  • 大的那个 n2 ≥diff​

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 17:05:44

报错解决 OSError: sndfile library not found

解决linux系统下 import soundfile 报错 OSError: sndfile library not found 虚拟环境中包的版本&#xff1a; python3.8.20 soundfile0.10.3.post1 librosa0.8.1 报错&#xff1a; 报错原因&#xff1a;查看soundfile官网手册&#xff0c;发现缺少 libsndfile 安装命令&a…

作者头像 李华
网站建设 2026/4/5 20:55:00

设计心得—单次调用的控制

一、单次调用 开发者很容易混淆单次调用和单实例两种机制&#xff0c;可能觉得二者没有区别。在前面的分析中&#xff0c;对单实例也就是唯一对象的处理进行过实现分析&#xff0c;而且其中的实施也使用了单次调用的方法。单次调用不仅可以用在生成单实例上&#xff0c;也可以用…

作者头像 李华
网站建设 2026/3/29 4:09:09

【小程序毕设全套源码+文档】基于Android的环境保护生活App的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/10 16:52:43

探索TMS320F28034数字控制LLC谐振开关电源开发板

TMS320F28034数字控制LLC谐振开关电源开发板学习板资料&#xff08;原理图源码&#xff09; CSS02404是基于德州仪器的TMS320F28034PNT设计的数字控制LLC电源模块开发板套件&#xff0c;适合数字控制LLC的入门与提高学习&#xff0c;并提供可靠的LLC设计参考。 开发板原边为传统…

作者头像 李华
网站建设 2026/4/15 12:49:39

用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程

很多人学 Unity 学到一半就卡住&#xff1a; 会 API、会拖组件&#xff0c;但就是做不出一个“完整的游戏”。问题通常不在技术点&#xff0c;而在缺少完整的开发流程意识。本文梳理用 Unity 从 0 到 1 做出一个**真正“可以玩的游戏”**所需要的步骤与方法。一、什么叫“可以玩…

作者头像 李华
网站建设 2026/4/15 12:49:39

基于深度学习YOLOv11的风力叶片缺陷识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 随着风力发电的快速发展&#xff0c;风力叶片作为核心部件&#xff0c;其表面缺陷的检测对保障机组安全运行至关重要。传统人工检测方法效率低且易受主观因素影响&#xff0c;而基于深度学习的智能检测技术能够显著提升缺陷识别的准确性和效率。本文提出了一种基…

作者头像 李华