一个正整数如果能被 a 或 b 整除,那么它是神奇的。

给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 109 + 7 取模 后的值。

示例 1:

输入:n = 1, a = 2, b = 3
输出:2

示例 2:

输入:n = 4, a = 2, b = 3
输出:6

提示:

  • 1 <= n <= 109
  • 2 <= a, b <= 4 * 104

分析:题目意思是我们要求第n个神奇的数字。

设 f(x)f(x)f(x) 表示为小于等于 xxx 的「神奇数字」个数,因为小于等于 xxx 中能被 aaa 整除的数的个数为 ⌊x/a⌋,小于等于 x 中能被 b 整除的个数为 ⌊xb⌋,小于等于 x 中同时能被 a 和 b 整除的个数为 ⌊x/c⌋,其中 c 为 a 和 b 的最小公倍数,所以 f(x) 的表达式为:

f(x) = x/a + x /b  -x/c ;

f(x)是一个单调递增的函数,那么我们可以用二分来查找第n个神奇数字

AC代码:

class Solution {public int nthMagicalNumber(int n, int a, int b) {
int MOD = 1000000007;long l = Math.min(a,b) ;long r = (long) n*Math.min(a,b) ;int c = lcm(a,b) ;while (l<=r ){long mid = (l+r )/2 ;long cnt = mid/a + mid/b - mid/c ;if (cnt>=n){r= mid -1 ;}else {l = mid+1 ;}}return (int) ((l)%MOD);}public int lcm(int a , int b ){return a* b / gcd(a,b) ;}public int gcd(int a ,int b ){return b!=0? gcd(b,a%b):a ;}
}

力扣每日一题:878. 第 N 个神奇数字【二分法】相关推荐

  1. 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

    目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...

  2. leetcode 力扣每日一题系列详解——总目录

    这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录

  3. 【爬虫】力扣每日一题每天自动邮件提醒!!!

    使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录 A.需求来源与分析 B.技术角度分析 C.具体分析步骤 1.接口协议分析 2.发邮件 3.写crontab放服 ...

  4. 力扣每日一题每天自动邮件提醒

    A.需求来源与分析 需求来源于生活,对于只是偶尔有兴趣做做题的我,力扣的每日一题对我一直有以下的不便: 太简单不想做,需要花太多时间的不想做,每天打开力扣其实只是想看一下是什么题,有意思才做. 看题需 ...

  5. 力扣每日一题:1720.解码异或后的数组 python异或操作

    1720.解码异或后的数组 https://leetcode-cn.com/problems/decode-xored-array/ 难度:简单 题目: 未知 整数数组 arr 由 n 个非负整数组成 ...

  6. LeetCode 力扣每日一题 488.祖玛游戏

    题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...

  7. 力扣每日一题——两数相加II

    发现做的题难度始终不高,今天Leecode给了一个稍微难一点的题目.(前两天没更是因为去拔牙了~~>_<~~) 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每 ...

  8. 2022.1.4 力扣-每日一题-猫和老鼠

    题目描述: 两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动. 图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成. 老鼠从节点 1 开始,第 ...

  9. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

  10. 【04-25】力扣每日一题

    本文首发于馆主君晓的博客,04-25每日一题 题目描述   话不多说,先放题目链接和题目截图,398.随机数索引,题目如下图所示: 题目分析   一般人看到这道题的思路就是使用哈希表去做,首先建立一个 ...

最新文章

  1. throws throw 自定义异常
  2. 如何在 Ubuntu Linux 16.04上安装开源的 Discourse 论坛
  3. Linux内存初始化(C语言部分)
  4. Web 第二阶段Java Script (续)
  5. springboot超详细教程_CG原画插画教程:超详细线稿教程
  6. Bootstrap HTML 编码规范之实用为王
  7. 【STM32】关闭JTAG接口,引脚设置推挽输出
  8. 结构体数组(SoA)与数组结构体(AoS)
  9. 谷歌:注意 Linux 内核中严重的零点击 “BleedingTooth” 蓝牙缺陷
  10. html中怎么让字体闪烁,HTML最简单的文字闪烁代码
  11. python requests下载zip文件_python requests 下载zip包
  12. 算法设计与分析基础 第四章谜题
  13. 数组中常见的问题,索引越界和空指针异常
  14. 七升七降调号_巧识五线谱08:如何记住七个“降号调”的调号与调的对应关系?...
  15. JavaScript实现输入框(密码框)出现提示语
  16. 痘痘告诉你,身体哪里生病了
  17. 跟循泰国国内游宣传曲MV,像本地人一样游曼谷
  18. ORACLE数据库23道练习题
  19. java开发工具(3)你真的会用IDEA么?(下)keyMap、Project Structure功能介绍
  20. 推荐一个外国的数据结构在线演示网站

热门文章

  1. VLC 视频转成rtsp流
  2. 面向对象写一个简单的学生管理系统
  3. centos7 ipython安装
  4. 计算机文化基础形考4实操,(精华版)国家开放大学电大专科《计算机文化基础》网络课形考任务4作业及答案(2页)-原创力文档...
  5. 个人作品——豆瓣FM客户端
  6. GREoverIPsec的本质华为
  7. 业务中立_网络中立性的终结了吗?
  8. 涂子沛谢耘“大数据”东西方思维大对决
  9. excel VBA自动化 - IF条件语句和FOR循环语句应用
  10. 开关电源的纹波和噪声