首页 > 其他分享 >P3327 [SDOI2015] 约数个数和

P3327 [SDOI2015] 约数个数和

时间:2024-03-26 21:36:09浏览次数:27  
标签:约数 lfloor frac P3327 sum rfloor 因子 ij SDOI2015

题意

求:

\[\sum_{i = 1} ^ n \sum_{j = 1} ^ m d(ij) \]

其中 \(d(n)\) 代表 \(n\) 的约数个数。

Sol

考虑拆开 \(d(ij)\),平凡的想法是考虑 \(i\) 和 \(j\) 分别对 \(d(ij)\) 提供因子。

注意到若 \(i\) 能提供完因子 \(p\),那么直接从 \(i\) 里取即可。

否则需要在 \(j\) 里取因子。

集中注意力,注意到从 \(j\) 里取因子,当且仅当 \(i\) 已经被取完了。

这句话看似是废话,但这告诉我们,取 \(j\) 的因子完全可以代表 \(i\) 的因子被取完。

考虑一种双射,取 \(i\) 表示取 \(i\),取 \(j\) 表示先取完 \(i\),然后再取 \(j\)。

因此我们保证了双射过后不会同时取 \(i\) 和 \(j\)。

也就是:

\[d(ij) = \sum_{x | i} \sum_{y | j} [\gcd(i, j) = 1] \]

后面的就很简单啦。

\[\begin{align*} \sum_{i = 1} ^ n \sum_{j = 1} ^ m d(ij) &= \sum_{i = 1} ^ n \sum_{j = 1} ^ m \sum_{x | i} \ sum_{y | j} [\gcd(i, j) = 1] \\ &= \sum_{x = 1} ^ n \sum_{y = 1} ^ m [\gcd(i, j) = 1] \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \\ &= \sum_{x = 1} ^ n \sum_{y = 1} ^ m \lfloor \frac{n}{x} \rfloor \lfloor \frac{m}{y} \rfloor \sum_{d | \gcd(x, y)} \mu(d) \\ &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) \sum_{x = 1} ^ n \sum_{y = 1} ^ m \lfloor \frac{n}{x} \rfloor \lfloor \frac{n}{y} \rfloor [d | x] [d | y] \\ &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) \sum_{x = 1} ^ {\lfloor \frac{n}{d} \rfloor} \sum_{y = 1} ^ {\lfloor \frac{m}{d} \rfloor} \lfloor \frac{n}{xd} \rfloor \lfloor \frac{m}{yd} \rfloor \end{align*}\]

令 \(f(n) = \sum_{i = 1} ^ n \lfloor \frac{n}{i} \rfloor\)。

\[\begin{align*} &= \sum_{d = 1} ^ {\min(n, m)} \mu(d) f(\frac{n}{d}) f(\frac{m}{d}) \end{align*}\]

预处理 \(f\),直接整除分块即可。

标签:约数,lfloor,frac,P3327,sum,rfloor,因子,ij,SDOI2015
From: https://www.cnblogs.com/cxqghzj/p/18097620

相关文章

  • 十 1360. 有序分数 (最大公约数|递归)
    1360.有序分数(最大公约数|递归)方法一思路:统计所有组合,并求其最大公约数是否为1,只有最大公约数为1的组合才成立,然后按组成的分数大小顺序排序。importjava.util.*;publicclassMain{privatestaticintgcd(inta,intb){returnb==0?a:gcd(b......
  • YBTOJ祭—质数与约数
    目录线性筛素数欧拉筛,老生常谈个人感觉放这道题的代码不如放板子//欧拉筛intprime[maxn];intfactor[maxn];intPrime(intn){intp=0;for(inti=2;i<=n;i++){if(!factor[i]){prime[p++]=i;factor[i]=i;......
  • NOJ南邮上机 最大公约数和最小公倍数 PROB1006 Python
    PROB1006  最大公约数和最小公倍数描述:求两个正整数的最大公约数和最小公倍数输入:两个正整数A,B输出:两个正整数的最大公约数、最小公倍数样例输入:43样例输出:112defmax_gcd(a,b):whileb!=0:temp=a%ba=bb=temp......
  • abc172D 约数之和
    题面:记f(x)表示x的约数个数,例如,12的约数有1,2,3,4,6,12共6个,因此f(12)=6。给定n,求\(\sum_{k=1}^{n}k*f(k)\)。范围:n<=1E7思路:用类似素数筛的做法预处理出所有f,然后遍历一次得到答案,时间复杂度O(nloglogn)。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglon......
  • 246. 区间最大公约数
    #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;typedeflonglongLL;constintN=500010;intn,m;LLw[N];structNode{intl,r;LLsum,d;}tr[N*4];LLgcd(LL......
  • 约数
    算数基本定理:正整数\(N\)可以被唯一分解为\(N=p_1^{c_1}\timesp_2^{c_2}\timesp_3^{c_3}\times\cdots\timesp_k^{c_k}\)。性质:\(N\)的正约数个数:\(\prod_{i=1}^k(c_i+1)\)\(N\)的正约数和:\(\prod_{i=1}^k\big(\sum_{j=0}^{c_i}p_i^j\big)\)九章算术·更相减......
  • The number of divisors(约数) about Humble Numbers
    Anumberwhoseonlyprimefactorsare2,3,5or7iscalledahumblenumber.Thesequence1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27,...showsthefirst20humblenumbers.Nowgivenahumblenumber,pleasewriteaprogramtocal......
  • [SDOI2015] 寻宝游戏
    [SDOI2015]寻宝游戏题目大意给你一棵树,边有边权,现在每个村庄可能会突然有宝藏,又可能会突然没宝藏。若可以随意选择起点,问每次修改后从起点遍历完所有宝藏再回到起点的最短路径长度。难度:七星(满分十星)题解注:\(dis(x,y)\)为\(x\)到\(y\)的距离。若目前有的点按照\(df......
  • 对最大公约数求法和扩展欧几里得算法的简要概述
    目录1.最大公约数(gcd)1.1更相减损术时间复杂度分析1.2辗转相除法(欧几里得算法)时间复杂度分析2.最小公倍数(lcm)3.裴蜀定理(贝祖定理)3.1扩展欧几里得算法(exgcd)1.最大公约数(gcd)数论中,通常用\(d\|\a\)表示\(d\)能整除\(a\),即\(......
  • 最大公约数和最小公倍数
    一、问题描述P1029[NOIP2001普及组]最大公约数和最小公倍数问题二、问题简析2.1最大公约数求两个正整数的最大公约数gcd(greatestcommondivisor),最常用的方法是辗转相除法。//求a和b的最大公约数intgcd(inta,intb){ if(b==0)returna; returngcd(a,......