news 2026/5/8 6:03:54

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

作者头像

张小明

前端开发工程师

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/5/3 17:02:07

安捷伦8720ES 8722ES E8632B网络分析仪

安捷伦8720ES&#xff08;20GHz&#xff09;是一款矢量网络分析仪&#xff0c;主要用于射频和微波元件的评测。其核心功能包括S参数测试、高动态范围测量以及多种校准选项&#xff0c;适用于无线通信和电子设计应用‌。 主要功能与使用方法 ‌频率范围‌&#xff1a;覆盖50MHz至…

作者头像 李华
网站建设 2026/5/1 9:21:27

【小程序毕设源码分享】基于springboot+Android的个人财务系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

作者头像 李华
网站建设 2026/5/3 4:53:47

效率直接起飞 9个AI论文平台测评:本科生毕业论文写作必备工具推荐

在当前学术研究日益数字化的背景下&#xff0c;本科生在撰写毕业论文时常常面临选题困难、文献检索繁琐、写作效率低下等挑战。为了帮助学生更高效地完成论文写作&#xff0c;笔者基于2026年的实测数据与真实用户反馈&#xff0c;对市面上主流的AI论文平台进行了系统性测评。本…

作者头像 李华
网站建设 2026/5/3 8:50:25

快速上线的AI客服源码系统,一站式部署企业智能服务

温馨提示&#xff1a;文末有资源获取方式面对日益增长的客户咨询需求&#xff0c;您是否在寻找一款能够快速部署、开箱即用的智能客服解决方案&#xff1f;我们推出的这款基于PHP原生开发的智能客服系统源码&#xff0c;集成了前沿AI能力与全面的后台管理功能&#xff0c;帮助企…

作者头像 李华
网站建设 2026/5/2 13:00:25

孙鑫C语言视频教程 零基础入门自学指南

孙鑫的C语言入门视频教程在编程初学者中有着很好的口碑&#xff0c;作为从事编程教学多年的讲师&#xff0c;我观察过许多学生通过学习这套教程成功入门编程。这套教程体系完整&#xff0c;讲解细致&#xff0c;特别适合那些想要系统学习C语言基础的学习者。下面我将结合教学经…

作者头像 李华