首页 > 其他分享 >2652. 倍数求和

2652. 倍数求和

时间:2023-10-17 10:33:06浏览次数:24  
标签:求和 2652 复杂度 times7 int 倍数 整除 sumDividerNum

1.题目介绍

2.题解

2.1 枚举

思路

直接从[1,n]进行一次遍历,判断出能被整除的数便加到一个变量result中

代码

class Solution {
public:
    int sumOfMultiples(int n) {
        int result = 0;
        for (int i = 1; i <=n; i++)
            if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0)
                result += i;
        return result;
    }
};

代价

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

2.2 容斥原理

思路

找到所有能被3整除的数并求和,同理分别找到所有能被5,7整除的数并求和;这里就会存在一个问题,重复求和了同时能被3,5,7其中两个或三个整除的数,需要减除重复的
综合一下分析,考虑在区间 [1,n]内能被数 m 整除的整数,从小到大排序后成为一个等差数列,和为:\(f(n,m)=\frac{(m+m\times\lfloor\frac nm\rfloor)\times\lfloor\frac nm\rfloor}2\)
根据 容斥原理,在区间 [1,n] 内,能被 3、5和 7 整除的整数之和为:\(f(n,3)+f(n,5)+f(n,7)-f(n,3\times5)-f(n,3\times7)-f(n,5\times7)+f(n,3\times5\times7)\)

代码

class Solution {
public:
    int sumOfMultiples(int n) {
        int result = 0;
        return sumDividerNum(n,3) + sumDividerNum(n,5) + sumDividerNum(n,7) - sumDividerNum(n,3*5) - sumDividerNum(n,3*7) - sumDividerNum(n,5*7) + sumDividerNum(n, 3*5*7);
    }

    int sumDividerNum(int n, int m){
        return (m+m*(n/m))*(n/m)/2;
    }
};

代价

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

标签:求和,2652,复杂度,times7,int,倍数,整除,sumDividerNum
From: https://www.cnblogs.com/trmbh12/p/17769083.html

相关文章

  • [LeetCode] 1354. Construct Target Array With Multiple Sums 多次求和构造目标数组
    Youaregivenanarray target ofnintegers.Fromastartingarray arr consistingof n 1's,youmayperformthefollowingprocedure:let x bethesumofallelementscurrentlyinyourarray.chooseindex i,suchthat 0<=i<n andsettheva......
  • 学习C语言心得-自定义函数 输入两个数字求和
    输入两个数字求和#include<stdio.h>intsum(inta,intb){ returna+b;}intmain(){ inta=0; intb=0; printf("请输入ab的值:"); scanf("%d%d",&a,&b); intSum=sum(a,b); printf("Sum=%d",Sum); return0;}运行......
  • vue中下载excel文件4种方法,2、通过 a 标签 download 属性结合 blob 构造函数下载发送p
    vue中下载excel文件4种方法,2、通过a标签download属性结合blob构造函数下载发送post请求和后台poi返回文件流实现下载1、通过url下载即后端提供文件的地址,直接使用浏览器去下载通过window.location.href=文件路径下载window.location.href=`${location.origin}/opera......
  • get请求和post请求的区别
    一.GET和POST是什么?HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接.二.GET请求和POST请求的区别是什么?GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中。GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。GET......
  • Get请求和Post请求
    引言Get请求和Post请求都是HTTP协议中的两种常见请求方法,底层都是TCP/IP协议,用于客户端与服务器之间的数据传输。Get请求Get请求用于从服务器获取数据,通过在URL中添加参数,将数据附加在请求中发送给服务器Get请求的参数是通过URL的查询字符串(querystring)来传递的,参数会被明......
  • 简单数学函数(最小公倍数与最大公约数与快速幂)
    最大公约数(\(gcd\)):intgcd(inta,intb){returnb?gcd(b,a%b):a;}最小公倍数(\(lcm\)):intlcm(inta,intb){returna/gcd(a,b)*b;//注意:除数为gcd(a,b)}快速幂:template<typenameA,typenameB,typenameC>Cpow(Ax,By,Cp){ if(x==......
  • 请求和响应
    第1关:通过response对象刷新网页任务描述本关任务:编写一个网页定时刷新并跳转的功能。相关知识为了完成本关任务,你需要掌握HttpServletResponse对象的常用方法和应用。编程要求在右侧编辑器Begin-End之间补充代码,编写一个模拟用户登录成功2秒后跳转至百度首页的......
  • 【群答疑】jmeter中对提取到的多个值求和并断言是否成功
    群友问题请求响应提取到多个值,求这些值的和,然后做断言。 演示数据获取下面所有money,然后求和{"data":{"firstPage":true,"lastPage":false,"list":[{"cwhname":"采购一部","p......
  • AcWing 463. 求和
    \(AcWing\)\(463\).求和一、题目描述一条狭长的纸带被均匀划分出了\(n\)个格子,格子编号从\(1\)到\(n\)。每个格子上都染了一种颜色\(color_i\)(用\([1,m]\)当中的一个整数表示),并且写了一个数字\(number_i\)。定义一种特殊的三元组:\((x,y,z)\),其中\(x,y,z\)都代表纸......
  • P6667 [清华集训2016] 如何优雅地求和 -Binomial Sum
    题面有一个多项式函数\(f(x)\),最高次幂为\(x^m\),定义变换\(Q\):\[Q(f,n,x)=\sum_{k=0}^{n}f(k)\binom{n}{k}x^k(1-x)^{n-k}\]现在给定函数\(f\)和\(n,x\),求\(Q(f,n,x)\bmod998244353\)。出于某种原因,函数\(f\)由点值形式给出,即给定\(a_0,a_1,⋯,a_m\)共\(m+1\)个......