【每日一题Day350】LC2652倍数求和 | 数学+容斥原理

倍数求和【LC2652】

给你一个正整数 n ,请你计算在 [1,n] 范围内能被 357 整除的所有整数之和。

返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。

暴力枚举

  • 思路

    枚举 [ 1 , n ] [1,n] [1,n]范围内每个数,判断是否能被 357 整除,如果能则累加结果

  • 实现

    class Solution {public int sumOfMultiples(int n) {int res = 0;for (int i = 1; i <= n; i++){if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0){res += i;}}return res;}
    }
    
    • 复杂度分析

      • 时间复杂度: O ( n ) O(n) O(n)
      • 空间复杂度: O ( 1 ) O(1) O(1)

从倍数出发

  • 优化思路:借鉴埃氏筛

    • [ 1 , n ] [1,n] [1,n]中有许多数不需要进行判断,我们可以从3、5、7的倍数出发,如果其在 [ 1 , n ] [1,n] [1,n]范围内,那么累加该数
    • 在统计的过程中要避免重复统计, 3 ∗ i 1 3*i_1 3i1 5 ∗ i 2 5*i_2 5i2 7 ∗ i 3 7*i_3 7i3可能指向同一个数
      • 方法1:使用哈希表记录已经统计过的数
      • 方法2:规定统计先后顺序,如果 i i i不能整除3,再判断 5 ∗ i 5*i 5i是否在范围内;如果 i i i不能整除3和5,再判断 7 ∗ i 7*i 7i是否在范围内
        • 如果 i i i中包含因子3,那么对于 i ∗ 5 = j ∗ 3 ∗ 5 i*5=j*3*5 i5=j35,在 i ′ = i / 3 ∗ 5 i'=i/3*5 i=i/35会统计该数
  • 实现

    class Solution {public int sumOfMultiples(int n) {int res = 0;int i = 1;       while (i * 3 <= n){res += i * 3;// 避免重复计算 如果i中包含因子3,那么i*5=j*3*5,在i'=i/3*5会统计该数if (i % 3 != 0){if (i * 5 <= n){res += i * 5;}if (i % 5 != 0 && i * 7 <= n){res += i * 7;}}// if (i % 3 != 0 && i * 5 <= n){//     res += i * 5;// }// if (i % 3 != 0 && i % 5 != 0 && i * 7 <= n){//     res += i * 7;// }i++;}return res;}
    }
    
    • 复杂度分析

      • 时间复杂度: O ( log ⁡ n ) O(\log n) O(logn)
      • 空间复杂度: O ( 1 ) O(1) O(1)

数学+容斥原理

  • 思路

    • 定义函数 f ( x , n ) f(x,n) f(x,n) [ 1 , n ] [1,n] [1,n]中能被 x x x整除的数之和,那么一共有 m = ⌊ n / x ⌋ m=\lfloor n/x \rfloor m=n/x个数能被 x x x整数,组成首项为 x x x、末项为 x m xm xm的等差数列,和为
      f ( x ) = ( x + m x ) ∗ m 2 f(x)=\frac {(x+mx)*m}{2} f(x)=2(x+mx)m

    • 根据容斥原理,能被 357 整除的所有数之和为
      f ( 3 , n ) + f ( 5 , n ) + f ( 7 , n ) − f ( 3 ∗ 5 , n ) − f ( 3 ∗ 7 , n ) − f ( 5 ∗ 7 , n ) + f ( 3 ∗ 5 ∗ 7 , n ) ; f(3,n) + f(5,n) + f(7,n) - f(3*5,n) - f(3*7,n) - f(5*7,n) + f(3*5*7,n); f(3,n)+f(5,n)+f(7,n)f(35,n)f(37,n)f(57,n)+f(357,n);

  • 实现

    class Solution {public int sumOfMultiples(int n) {return f(3,n) + f(5,n) + f(7,n) - f(3*5,n) - f(3*7,n) - f(5*7,n) + f(3*5*7,n);}public int f(int x, int n){int m = n / x;return (x + m * x) * m / 2;}
    }
    
    • 复杂度分析

      • 时间复杂度: O ( 1 ) O(1) O(1)
      • 空间复杂度: O ( 1 ) O(1) O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/108081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧党建小程序源码系统+在线答题考试二合一 带完整的搭建教程

大家好&#xff0c;今天来给大家分享一个智慧党建小程序源码系统。以下是部分核心代码图&#xff1a; 系统特色功能一览&#xff1a; 积分体系&#xff1a;党员可以通过完成各种党建活动&#xff0c;如学习党的理论知识、参加组织生活、开展志愿服务等获得积分&#xff0c;积分…

全局事件总线

全局事件总线 功能&#xff1a;可以解决所有组件之间通信传数据的问题原理&#xff1a;通过一个共享对象&#xff0c;将所有组件全部绑定到对象上&#xff0c;即可通过这个对象实现组件与组件之间的传递数据&#xff0c;而这个共享对象叫做全局事件总线。 如何分清楚谁是发送方…

Linux命令行 从入门到精通系列讲解 - 总目录

&#x1f466; 作者介绍&#xff1a;Bazinga bingo&#xff0c;专注linux领域应用硬核干货分享&#xff0c;潜心修炼&#xff0c;虚心学习。 &#x1f4d5; 本文收录于《Linux心法&#xff1a;指令精要》专栏&#xff0c;包含Linux入门到精通的命令大全详解。 &#x1f4d8; 本…

基础课3——自然语言处理的应用

自然语言处理是一种将人类语言转换为机器语言&#xff0c;以实现人机交互的技术。应用非常广泛&#xff0c;例如&#xff1a; 人机交互&#xff1a;自然语言处理技术可以应用于人机交互&#xff0c;让机器能够理解和运用人类语言&#xff0c;从而实现更加智能化的交互体验。 机…

一元函数极值问题

一元函数极值问题 0 引言 在高等数学课程中&#xff0c;我们应该都学习过一元函数的极值问题&#xff0c;这篇文章我们再来回顾一下相关知识点。为什么要对一元函数的极值问题进行回顾&#xff1f;因为后面我会出一篇非线性规划问题的极值问题&#xff0c;其中会涉及到多元函…

什么是库存管理?无需Excel,2023年这几款大热库存管理软件你get了吗?

什么是库存管理&#xff1f;库存管理是什么意思&#xff1f;都有哪些好用的库存管理系统&#xff1f;相信这些都是大家非常关注的话题&#xff0c;这篇就跟大家详细唠唠什么是库存管理&#xff0c;都用什么系统可以进行库存管理&#xff0c;并且为大家盘点2023年这几款大热库存…

LeetCode 只出现一次的数字 合集

一&#xff1a;只有一个元素出现一次&#xff0c;其他出现两次 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该…

Java关键字 —— super 详细解释!一看就懂 有代码实例运行!

super在父类、子类相关联的操作中经常被用到 super 是Java中的关键字&#xff0c;用于引用父类&#xff08;超类&#xff09;的成员变量、方法或构造函数。它有以下主要用途&#xff1a; 访问父类中的成员变量调用父类中的构造方法调用父类中的方法 在没有继承和被继承关系的类…

(九)类特殊成员(属性和方法)

Python 类中&#xff0c;凡是以双下划线 "__" 开头和结尾命名的成员&#xff08;属性和方法&#xff09;&#xff0c;都被称为类的特殊成员&#xff08;特殊属性和特殊方法&#xff09;。例如&#xff0c;类的 __init__(self) 构造方法就是典型的特殊方法。 Python …

Macos数据库管理:Navicat Premium 中文

Navicat Premium提供了直观且易用的图形用户界面&#xff0c;使得操作更为便捷。Navicat Premium 中文支持多种数据库系统&#xff0c;如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等&#xff0c;可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…

Oracle 运维篇+应用容器数据库的install、upgrade、patch、uninstall

★ 知识点 ※ DEFAULT_SHARING参数的取值 METADATA: 元数据链接共享数据库对象的元数据&#xff0c;但其数据对于每个容器是唯一的。这些数据库对象被称为元数据链接的应用程序公共对象。此设置为默认设置。DATA: 数据链接共享数据库对象&#xff0c;其数据对于应用程序容器中…

医疗实施-闭环管理

闭环管理 1.闭环管理概念2.医院闭环的种类2.1 患者追踪闭环2.1.1住院追踪闭环2.1.2门诊追踪闭环 2.2 药品医嘱闭环2.2.1 住院药品医嘱闭环2.2.2 门诊药品医嘱闭环 2.3 检验医嘱闭环2.3.1住院检验闭环2.3.2门诊检验闭环 2.4检查医嘱闭环2.4.1住院检查闭环2.4.2门诊检查闭环 2.5手…

elasticsearch常用命令

Elasticsearch概念 ElasticsearchmysqlIndex(索引)数据库Type(类型)表Documents(文档)行Fields列 常用命令 索引 # 索引初始化&#xff0c;number_of_shards:分片数&#xff0c;不可修改&#xff1b;number_of_replicas:副本数&#xff0c;可修改 PUT lagou {"settings…

关于代理服务器那点事

问题:我们有时候会遇到,后端再本地服务器开发,不是测试服上,这时候我们就需要代码几个baseurl 答:一个axios只能代理一个baseurl axios 库本身只能代理一个 baseURL。在一个 axios 实例中,只能指定一个基准 URL 来发送请求。如果需要在应用程序中使用多个不同的 baseUR…

Discuz户外旅游|旅行游记模板/Discuz!旅行社、旅游行业门户网站模板

价值328的discuz户外旅游|旅行游记模板&#xff0c;本模板需要配套【仁天际-PC模板管理】插件使用。 模板说明 1、模板页面宽度1200px&#xff0c;简洁大气&#xff0c;较适合户外旅行、骑行、游记、摩旅、旅游、活动等类型的论坛、频道网站&#xff1b; 2、所优化的页面有&…

优雅而高效的JavaScript——Proxy 和 Reflect

&#x1f914;博主&#xff1a;小猫娃来啦 文章核心&#xff1a;优雅而高效的JavaScript——Proxy 和 Reflect 文章目录 Proxy 和 Reflect是什么Proxy创建 Proxy 对象拦截器方法拦截器示例&#xff1a;属性拦截拦截器示例&#xff1a;方法拦截 ReflectReflect 的静态方法Reflec…

ESP32单片机环境搭建(VScode + PlatformIO IDE)

一、环境搭建&#xff08;VScode PlatformIO IDE&#xff09; 1、官网下载VScode; 2、安装最新的插件&#xff08;C/C、PlatformIO IDE、python、Chinese&#xff09;&#xff1b; 3、在PlatformIO IDE中新建工程&#xff1a;Platforms——Projects——Create New Project——…

软考 系统架构设计师系列知识点之基于架构的软件开发方法ABSD(6)

接前一篇文章&#xff1a; 所属章节&#xff1a; 第7章. 系统架构设计基础知识 第5节. 特定领域软件体系结构 相关试题 1. 基于架构的软件设计&#xff08;ABSD&#xff09;强调由商业、质量和功能需求的组合驱动软件架构设计。ABSD方法有三个基础&#xff1a;功能分解、&…

P2251 质量检测

题目&#xff1a; P2251 质量检测 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码&#xff1a; #include<iostream> #include<cstdio> #include<deque> #include<vector> typedef long long ll; const ll N 1e7; using namespace std;int main…

vscode - 环境准备 - 修改缓存路径

说明 在window上使用vscode&#xff0c;其默认的缓存&#xff08;包含代码缓存&#xff0c;插件等&#xff09;存储路径是在c盘&#xff0c;即使将vscode安装在其它磁盘。频繁使用vscode&#xff0c;vscode会占用C盘大量磁盘空间&#xff0c;C盘空间不充裕&#xff0c;会被vsc…