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

P11177 [ROIR 2018 Day1] 平方与立方 题解

题目传送门

通俗题意

给你三个整数 a , b , k a, b, k a,b,k,需要你求出满足下列条件的不同的 x , y x, y x,y 有多少对。

  • a ≤ x 2 , y 3 ≤ b a\leq x^2, y^3 \leq b ax2,y3b
  • ∣ x 2 − y 3 ∣ ≤ k |x^2 - y^3| \leq k x2y3k
  • x , y x, y x,y 均为非负整数。

解题思路

注意到题目中一直在算平方和立方,所以可以猜测正确的时间复杂度应该是带有根号的。又观察到 1 ≤ a ≤ b ≤ 1 0 18 1\leq a \leq b \leq 10^{18} 1ab1018,所以排除 O ( n ) \mathcal{O}(\sqrt{n}) O(n ) 的算法,那么还有一种可能的时间复杂度就是 O ( n 3 ) \mathcal{O}(\sqrt[3]{n}) O(3n )

首先 x , y x, y x,y 一定是在区间 [ ⌈ a 3 ⌉ , ⌊ b 3 ⌋ ] [\lceil\sqrt[3]{a}\rceil, \lfloor\sqrt[3]{b}\rfloor] [⌈3a ,3b ⌋] 之间的。为什么要加上向上取整与向下取整呢?因为 x , y x, y x,y 为整数,那么当 y = ⌊ a 3 ⌋ y = \lfloor\sqrt[3]{a}\rfloor y=3a 时, y 3 ≤ a y^3 \leq a y3a,很明显在 a a a 不是完全立方数时满足 y 3 < a y^3 < a y3<a,例如 a = 3 a = 3 a=3 时, y = ⌊ 3 3 ⌋ = 1 y = \lfloor\sqrt[3]{3}\rfloor = 1 y=33 =1,而 y 3 = 1 < a y^3 = 1 < a y3=1<a

接着我们考虑在区间 [ ⌈ a 3 ⌉ , ⌊ b 3 ⌋ ] [\lceil\sqrt[3]{a}\rceil, \lfloor\sqrt[3]{b}\rfloor] [⌈3a ,3b ⌋] 之间枚举 y y y。这时 ∣ x 2 − y 3 ∣ ≤ k |x^2 - y^3| \leq k x2y3k 就可以看成 x 2 x^2 x2 只能在 [ y 3 − k , y 3 + k ] [y^3 - k, y^3 + k] [y3k,y3+k] 中。那么当 y 3 − k ≥ 0 y^3 - k \geq 0 y3k0 时, x x x 的最小取值为 y 3 − k \sqrt{y^3 - k} y3k ,当 y 3 − k < 0 y^3 - k < 0 y3k<0 时,我们让 x = 0 x = 0 x=0

所以, x x x 所在的区间也就是 [ max ⁡ { 0 , y 3 − k } , y 3 + k ] [\sqrt{\max\{0, y^3 - k\}}, \sqrt{y^3 + k}] [max{0,y3k} ,y3+k ]。但是题目要求 a ≤ x 2 ≤ b a\leq x^2 \leq b ax2b,所以最终 x x x 的取值范围就是 [ max ⁡ { y 3 − k , a } , min ⁡ { y 3 + k , b } ] [\sqrt{\max\{y^3 - k, a\}}, \sqrt{\min\{y^3 + k, b\}}] [max{y3k,a} ,min{y3+k,b} ]。我们都知道 l ∼ r l\sim r lr 之间的整数的个数为 r − l + 1 r - l + 1 rl+1,那么我们就可以解出这道题了。

算法总时间复杂度 O ( b − a 3 ) \mathcal{O}(\sqrt[3]{b - a}) O(3ba )

CODE:

#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {ios::sync_with_stdio(false);ios_base::sync_with_stdio(false);cin.tie(0), cout.tie(0);int a, b, k, ans = 0;cin >> a >> b >> k;int l = ceil(cbrt(a)), r = cbrt(b);for (int y = l; y <= r; y++) {ans += floor(sqrt(min(y * y * y + k, b))) - ceil(sqrt(max(y * y * y - k, a))) + 1;}cout << ans;return 0;
}

http://www.mrgr.cn/news/50644.html

相关文章:

  • 高精度SAR ADC研究与设计——雷鹏(二)
  • Mac的键盘屏幕需要常清理,你不可缺少的好帮手
  • 10.仓库管理系统(springbootvue3)
  • 从零开始的LeetCode刷题日记:二叉树的迭代遍历
  • 高标准农田信息化与物联网技术的融合
  • 2024年看项目管理软件与工程项目管理的奇妙融合
  • C++学习,标准库 <iterator>
  • vlan的基础知识
  • 留学生辅导 | 谈谈英国硕士论文如何进行论证
  • 利用vmware在移动硬盘安装Ubuntu2go
  • 大学新生编程学习指南:制定有效计划,开启编程之旅
  • Android14 SystemUI 启动流程(1)
  • Ubuntu里彻底卸载UHD
  • SHA256算法学习
  • MATLAB代码解析:利用DCGAN实现图像数据的生成 全网最细DCGAN设计-训练入门
  • [供应链] 让步接收
  • 安科瑞ARB5弧光保护在船舶中压配电板中的应用-安科瑞黄安南
  • Vue3创建
  • Flutter框架学习计划
  • 一份Python自动化测试学习秘籍,请查收!