首页 > 其他分享 >Sum of MSLCM 题解

Sum of MSLCM 题解

时间:2023-06-05 17:00:14浏览次数:43  
标签:int 题解 Sum MSLCM 数集 text sum

Sum of MSLCM

题目大意

定义 \(\text{MSLCM}(n)\) 为所有满足该数集的 \(\text{lcm}\) 为 \(n\) 的数集中元素个数最多的数集的所有数字的和,现有多次询问,求

\[\sum_{i=2}^n\text{MSLCM}(i) \]

思路分析

大水题。

虽然看着这个东西很可怕,但仔细一想你就会发现,其实 \(\text{MSLCM}(n)=\sum_{d|n}d\),这个所谓的数集其实就是由 \(n\) 的约数集,因为只有这样才能满足元素个数最多的条件。

那么我们要求的就是下面这个

\[\sum_{i=2}^n\sum_{d|i}d \]

简单化一下

\[\begin{aligned}&\sum_{i=2}^n\sum_{d|i}d\\&=\sum_{i=1}^n\sum_{d|i}d-1\\&=\sum_{i=1}^n\sum_{d=1}^nd[d|i]-1\\&=\sum_{d=1}^nd\sum_{i=1}^n[d|i]-1\\&=\sum_{d=1}^nd\lfloor\frac{n}{d}\rfloor-1\end{aligned} \]

只需要整除分块就好了。

时间复杂度:\(O(T\sqrt n)\)。

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long//好习惯

int n,ans;

signed main(){
    while(true){
        scanf("%lld",&n);
        if(n==0) return 0;ans=0;
        for(int l=1,r;l<=n;l=r+1){//整除分块
            r=n/(n/l);
            ans+=(n/l)*(r+l)*(r-l+1)/2;
        }
        cout<<ans-1<<'\n';
    }
    return 0;
}

标签:int,题解,Sum,MSLCM,数集,text,sum
From: https://www.cnblogs.com/TKXZ133/p/17458272.html

相关文章

  • Java模拟表单提交编码不同导致乱码问题解决
    最近有个业务需要模拟表单提交到asp页面中,但是我的项目编码是UTF8,而asp页面是GB2312,中文字段提交后,到达数据库后是乱码.问题的解决在于模拟提交的时候指定编码:我用的HTTP框架是Unirest,代码如下:......
  • 安装Navicat遇到的问题解决
    1、如果遇到安装出现问题,并且不能激活,需要重新卸载安装。需要彻底卸载2、除了点击卸载安装之后,需要注册表删除掉所有的信息,以及删除掉在C:\ProgramFiles\PremiumSoft的Navicat删除掉3、删除注册表Win+R之后输入:regedit进入注册表3.1找到计算机\HKEY_CURRENT_USER\Softwar......
  • [ABC208E] Digit Products 题解
    DigitProducts题目大意求有多少个不大于\(n\)的正整数,使得该正整数各位乘积不大于\(k\)。思路分析观察数据范围,首先考虑数位DP。考虑设计记忆化搜索函数dfs(intpos,boollimit,boollead0,intmul)表示当前枚举到第\(\text{pos}\)位,第\(\text{pos}\)位是否受到限......
  • [ABC207E] Mod i 题解
    Modi题目大意给定一个序列\(a\),问将其划分成若干段,满足第\(i\)段的和是\(i\)的倍数的划分方案的个数。思路分析考虑DP,设\(f_{i,j}\)表示将序列中前\(i\)个数划分成\(j\)段,且满足条件的划分方案的个数,容易得出状态转移方程:\[f_{i,j}=\sumf_{k,j-1}(\sum_{h=k+1}......
  • [ABC205E] White and Black Balls 题解
    WhiteandBlackBalls题目大意将\(n\)个白球,\(m\)个黑球排成一列,要求满足\(\foralli\in[1,n+m],w_i\leb_i+k\),问存在多少种排法。其中\(w_i\)表示第\(i\)个球前的白球数量,\(b_i\)表示第\(i\)个球前的黑球数量。思路分析我们可以将一种排法映射成一条从\((0,0)......
  • [ABC205F] Grid and Tokens 题解
    GridandTokens题目大意给定\(n\)个点和一个\(H\timesW\)的网格,每个点可以放置在\((A_i,B_i)\)到\((C_i,D_i)\)的矩形中或不放,每一行或一列只能放置一个点,求最多能放多少个点。思路分析首先看数据范围,再结合题目给的限制条件,容易发现这是一道网络流。考虑建图,因为......
  • [ABC201E] Xor Distances 题解
    XorDistances题目大意给定一颗带边权无根树,定义\(\text{dis}(i,j)\)表示\(i,j\)两点在树上的最短路径的边权的异或和。求:\[\sum_{i=1}^n\sum_{j=i+1}^n\text{dis}(i,j)\]思路分析首先,容易证明:\[\text{dis}(i,j)=\text{dis}(i,x)\oplus\text{dis}(x,j)\]这个式子告诉我......
  • [ABC202E] Count Descendants 题解
    CountDescendants题目大意给定一颗以\(1\)为根的树,多次询问求某点的子树中深度为给定值的点的个数。思路分析对于每个深度开一个vector,从大到小存下这个深度的所有点的dfs序开始值和结束值,询问时只需要在对应深度的vector中二分作差即可。代码#include<iostream>#......
  • [ABC204E] Rush Hour 2 题解
    RushHour2题目大意给定一张无向图,边带两个参数\(c_i,d_i\),在\(t\)时间时经过第\(i\)条边所需的时间是\(c_i+\lfloor\frac{d_i}{t+1}\rfloor\),求在时间\(0\)时出发,在每个点可以停留非负整数时间,从点\(1\)到点\(n\)所需的最短时间。思路分析首先,容易发现在时间\(......
  • P2487 拦截导弹 题解
    拦截导弹题目大意给定若干元素,每个元素有\(3\)个属性\(t_i,h_i,v_i\),求出一个使得对于\(\foralli,j,i>j\),\(t_i>t_j,h_i\leh_j,v_i\lev_j\)均成立的最长的子序列\(a\)的长度。并计算每个元素在所有的可能的\(a\)方案中的出现概率。思路分析先看第一个问题:按\(......