首页 > 其他分享 >约数个数和

约数个数和

时间:2024-05-06 21:01:35浏览次数:10  
标签:约数 lfloor frac min sum 个数 rfloor

首先这个约数公式要记住,具体见这篇题解

然后剩下的就是比较简单的套路操作了,最后会化出来

\[\sum_{d=1}^{min(n,m)}\sum_{d|x}\sum_{d|y}\lfloor\frac{n}{x}\rfloor\lfloor\frac{m}{y}\rfloor u(d)=\sum_{d=1}^{min(n,m)}u(d)(\sum_{d|x}\lfloor\frac{n}{x}\rfloor)(\sum_{d|y}\lfloor\frac{m}{y}\rfloor)=\sum_{d=1}^{min(n,m)}u(d)(\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{dk}\rfloor)(\sum_{k=1}^{\lfloor\frac{m}{d}\rfloor}\lfloor\frac{m}{dk}\rfloor)=\sum_{d=1}^{min(n,m)}u(d)(\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{\lfloor\frac{n}{d}\rfloor}{k}\rfloor)(\sum_{k=1}^{\lfloor\frac{m}{d}\rfloor}\lfloor\frac{\lfloor\frac{m}{d}\rfloor}{k}\rfloor) \]

令\(f(x)=\sum_{k=1}^x\lfloor\frac{x}{k}\rfloor\),则求式等于

\[\sum_{d=1}^{min(n,m)}u(d)f(\lfloor\frac{n}{d}\rfloor)f(\lfloor\frac{m}{d}\rfloor) \]

预处理出\(f\),然后对这个式子进行数论分块就好了

标签:约数,lfloor,frac,min,sum,个数,rfloor
From: https://www.cnblogs.com/dingxingdi/p/18175933

相关文章

  • C. 最大公约数
    C.最大公约数求\(\sum\limits_{i=1}^n\dfrac{n}{gcd(i,n)}\)。先考虑用欧拉函数解决。考虑枚举\(d=\gcd(i,n)\)的取值。式子变成\(\sum\limits_{d\midn}\sum\limits_{i=1}^n[\gcd(i,n)=d]\cdot\dfrac{n}{d}\)。对于\(\gcd(a,b)=d\),有\(\gcd(\frac{a}{d},\frac{b}{d})=1......
  • 力扣-1979. 找出数组的最大公约数
    1.题目介绍题目地址(c-力扣(LeetCode))https://leetcode.cn/problems/find-greatest-common-divisor-of-array/题目描述给你一个整数数组nums,返回数组中最大数和最小数的最大公约数。两个数的 最大公约数是能够被两个数整除的最大正整数。 示例1:输入:nums=[2,5,6......
  • 质数、最大公约数经典问题整理
    1、计数质数MX=5000000is_prime=[1]*MXis_prime[0]=is_prime[1]=0foriinrange(2,MX):ifis_prime[i]:forjinrange(i*i,MX,i):is_prime[j]=0classSolution:defcountPrimes(self,n:int)->int:return......
  • 【知识点】欧几里得算法求最大公约数
    最大公约数所为的最大公约数,是指两个或多个整数共有的约数中最大的那个数。换句话说,它是能同时整除给定的整数的最大整数。例如,对于整数\(12\)和\(18\),它们的公约数有\(1、2、3、6\),其中最大的公约数为6,因此它们的最大公约数为\(6\)。最大公约数通常用符号\(\gcd(a,b)\)......
  • 查找链表倒数第k个数位置上的结点
    (1)描述算法的基本思想由题可知,该链表是个单向链表,如果要找到倒数第k个值,我们必须找到该链表的尾部,而单向链表从尾部向头部找倒数第k个值比较麻烦,所以我们可以从头部去找倒数第k个值(2)描述算法的详细实现步骤我们可以利用两个指针去遍历该链表,一个指针遍历完该链表计算出结点个数......
  • Excel 怎么统计相同项的个数
    excel统计相同项个数的方法:首先选择需要进行统计结果的单元格,并输入统计函数;然后在括号内输入需要统计的范围,再输入需要统计的项;最后设置好参数,并按下回车键。本文操作环境:Windows7系统,MicrosoftOfficeExcel2010版本,DellG3电脑。excel统计相同项个数的方法:1、用excel将我们......
  • php几个数组的奇淫巧计
    使用array_map()应用函数到数组的每个元素。$numbers=[1,2,3,4,5];$squares=array_map(function($number){return$number*$number;},$numbers);//$squares=[1,4,9,16,25]使用array_filter()过滤数组中的元素。$numbers=[1,2,3,4,5];$o......
  • 注册表(Registry)是Windows操作系统中用来存储配置信息和系统设置的一个关键组成部分。
    注册表(Registry)是Windows操作系统中用来存储配置信息和系统设置的一个关键组成部分。它类似于一个数据库,用来存储有关用户、硬件、软件和其他系统设置的信息。注册表包含了操作系统及其安装的应用程序所需的许多配置信息。注册表包含了多个部分,其中一些最重要的部分包括:HK......
  • 给定两个数x和y(长度相等),让它们可以交换各个位上的数字(位对应交换),求让两数乘积最大的
    如题,给出x=73,y=31,如何让两数乘积最大?位数定义:各个位上的数字例73,位数有7,3当前,只有一种交换策略,x=71,y=33,发现交换以后有:x+y=x'+y',如果抽象成求最大面积就好办了,可能一下想不到,还得多积累经验,不是你不知道是你想不到是你见得少,没见识...当是正方形的时候面积最大小学......
  • 485. 最大连续 1 的个数
    1.题目介绍题目地址(485.最大连续1的个数-力扣(LeetCode))https://leetcode.cn/problems/max-consecutive-ones/题目描述给定一个二进制数组nums,计算其中最大连续1的个数。 示例1:输入:nums=[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续1,所以最大......