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

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

链接: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​

http://www.jsqmd.com/news/349470/

相关文章:

  • 告别代码安全焦虑!Swift Code源代码安全审计工具,让漏洞无处可藏
  • 【值得收藏】Anthropic Agent工程新范式:MCP+PTC、Skills与Subagents实战指南
  • 好写作AI:学术语言风格的AI速成法——三天告别“小白体”,七天养成“期刊范”
  • 金属3D打印之MJ材料喷射工艺(Material jetting)
  • 座舱十年演进
  • Perplexity:从对话式搜索到开发者的“第二大脑”
  • 当 Perplexity 遇上 Vibe Coding:从搜索框到“会写代码的结对程序员”
  • AI Agent完全指南:从LLM到智能体架构,程序员必看收藏
  • 稳定不掉线:IACheck × AI审核如何成为电源产品认证报告的“稳定供电系统”
  • 哪些因素在损害孩子们的视力,做调节训练有用吗?
  • 【珍藏必备】ReAct框架实战指南:从零开始构建AI智能体,让大模型学会思考与行动
  • 基于深度学习YOLOv12的风力叶片缺陷识别检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 探索TMS320F28034数字控制LLC谐振开关电源开发板
  • 零基础转行,到底该选“稳定基建派”的云计算运维,还是“高薪风口派”的网络安全?
  • 台达B系列触摸屏直接通讯三菱E700变频器程序资料 不需要plc,通过台达触摸屏可以直接控制和...
  • 计算机毕业设计之基于SpringBoot技术的首饰拍卖系统
  • 基于深度学习YOLOv11的风力叶片缺陷识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • PC 端(Windows/macOS)和 iOS 端的系统架构、安全机制差异有多大?
  • 【finetune】Full Fine-tuning vs Frozen Backbone:迁移学习中的参数调优实践
  • Spring漏洞测试与利用
  • 【小程序毕设全套源码+文档】基于Android的武汉市公交路线查询系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • java+vue基于springboot音乐分享与交流平台设计与实现_d5uc422q-Pycharm vue django项目源码
  • 基于深度学习YOLOv11的安检x光危险物识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 【小程序毕设全套源码+文档】基于微Android平台的诗词学习系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 车十年演进
  • java+vue基于springboot高校大学生竞赛管理系统设计与开发_50fo515o-Pycharm vue django项目源码
  • 【小程序毕设全套源码+文档】基于Android和java的酒店管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 【小程序毕设全套源码+文档】基于Android的在线招聘平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • java+vue基于springboot高校学生绩点成绩预警管理系统的设计与实现_z02l4r0f-Pycharm vue django项目源码
  • 基于深度学习YOLOv11的跌倒识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)