IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> [题解] 《算法零基础100讲》(第29讲) 容斥原理——题1 -> 正文阅读

[数据结构与算法][题解] 《算法零基础100讲》(第29讲) 容斥原理——题1

零、欸嘿!

英雄哪里出来《C语言入门100例》传送门

https://bbs.csdn.net/forums/hero?category=0&typeId=17913icon-default.png?t=LA92https://bbs.csdn.net/forums/hero?category=0&typeId=17913

一、题目

1201. 丑数 III

难度中等86

给你四个整数:n?、a?、b?、c?,请你设计一个算法来找出第?n?个丑数。

丑数是可以被?a??b??c?整除的?正整数?。

示例 1:

输入:n = 3, a = 2, b = 3, c = 5
输出:4
解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 个是 4。

力扣icon-default.png?t=LA92https://leetcode-cn.com/problems/ugly-number-iii/?

二、解题

思路;摊牌了,我抄的,但是我看懂了(大概),就是好好看看容斥原理,a,b,c,的丑数并集,然后a的丑数就是1a,2a,3a等等,所以小于等于3a的丑数有(3a/a)等于3个,所以?小于mid的丑数个数m = mid/a+mid/b+mid/c-mid/ab-mid/ac-mid/bc+mid/abc,除不尽的情况也没事,根据循环条件,最后一定会确定一个数,除不尽时候会继续循环下去

#define ll long long      //求最大公约数
int gcd(int a, int b){
    return !b ? a : gcd(b, a % b);
}
ll lcm(int a, int b){
    return (ll)a / gcd(a, b) * b;   //求最小公倍数
}

int nthUglyNumber(int n, int a, int b, int c){
    ll ab = lcm(a, b);    //a 和 b的最小共倍数
    ll ac = lcm(a, c);     //a 和 c 的最小共倍数
    ll bc = lcm(b, c);     //b 和 c 的最小公倍数
    ll abc = lcm(lcm(a, b), c);     //a, b, c的最小公倍数
    int left = 1, right = 2000000000;  //二分左右端点
    while(left < right){    //退出循环的条件,最后可以唯一确定一个数
        ll mid = left + (right - left) / 2;  //中点
        ll m = mid/a+mid/b+mid/c-mid/ab-mid/ac-mid/bc+mid/abc; //小于mid的丑数个数
        if(m < n){
            left = mid + 1;   //重新确定左右边界,继续循环
        }
        else{
            right = mid;
        }
    }
    return left;   //返回左端点
}

三、结果

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:52:03  更:2021-11-19 17:52:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:24:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码