$f(m)=\sum\limits_{i=1}^{m-1}\sum\limits_{j=1}^{m-1}[(ij,m) \ne m]$,$g(n)=\sum\limits_{m|n}f(m)$,$1 \le n \le 10^9$,求$g(n)$模$2^{64}$。

要求为$i j ∤ m$,说明$ij$不为$m$的倍数,但是可以有公共因子,直接求很麻烦,不如先反着来求不符合的,最后再减掉。然后就是化式子,枚举一个数$(m, i)=d$,则另一个数满足$\frac{m}{d}|j$,二者各自有$\varphi(\frac{m}{d})$和$d$个数量,继续化简,之后可以观察到右半式就是某很经典的欧拉函数的结论,然后预处理素数,素因子分解计算下贡献,最后左右两个半式相减就行了。

\begin{eqnarray*} g(n) &=& \sum\limits_{m|n}(m^2-\sum\limits_{i=1}^{m-1}\sum\limits_{j=1}^{m-1}[(ij,m) = m]) \newline &=&\sum\limits_{m|n} {m^2} - \sum\limits_{m|n} \sum\limits_{d|m} d\varphi \left( \frac{m}{d} \right) \newline &=& \sum\limits_{m|n} {m^2} - \sum\limits_{d|n}d {\sum\limits_{\frac{m}{d}|\frac{n}{d}} {\varphi \left( {\frac{m}{d}} \right)} } \newline &=& \sum\limits_{m|n} {m^2} - \sum\limits_{d|n}{d \frac{n}{d}} \newline &=& \sum\limits_{m|n} {m^2} - n \sum\limits_{d|n}{1} = \sum\limits_{m|n} {m^2} - n \tau(n) \end{eqnarray*}

还有另外一种方法就是直接利用积性函数的性质,再用欧拉函数化简。得到的最后式子是一样的。

/** @Date    : 2017-10-20 14:18:28
* @FileName: HDU 5528 反演.cppc
* @Platform: Windows
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version : $Id$
*/
#include <bits/stdc++.h>
#define LL unsigned long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 5e4+20;
const double eps = 1e-8; LL pri[N];
bool vis[N];
int c = 0; void prime()
{
MMF(vis);
for(int i = 2; i < N; i++)
{
if(!vis[i]) pri[c++] = i;
for(int j = 0; j < c && i * pri[j] < N; j++)
{
vis[i * pri[j]] = 1;
if(i % pri[j] == 0) break;
}
}
} int main()
{
prime();
int T;
scanf("%d", &T);
while(T--)
{
LL n;
scanf("%llu", &n);
LL t = n;
LL sum = 1ULL, dis = 1ULL;
for(int i = 0; i < c && pri[i] * pri[i] <= t; i++)
{
if(t % pri[i] == 0)
{
LL cnt = 1;
LL tmp = 1ULL;
LL k = 1ULL;
while(t % pri[i] == 0)
t /= pri[i], cnt++; for(int j = 0; j < cnt - 1; j++)
{
tmp *= pri[i];
k += (LL)tmp * tmp;// ()* m^2
}
sum *= k;
dis *= cnt;
}
}
if(t > 1)
{
sum *= t * t + 1;
dis *= 2ULL;
}
dis *= n;
printf("%llu\n", sum - dis);
}
return 0;
}

HDU 5528 反演的更多相关文章

  1. 2015ACM/ICPC亚洲区长春站 B hdu 5528 Count a * b

    Count a * b Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  2. HDU 5528 Count a * b 欧拉函数

    题意: 定义函数\(f(n)\)为\(i \cdot j \not\equiv 0 \; (mod \; n)\)的数对\((i,j)\)的个数\((0 \leq i,j \leq n)\) \(g( ...

  3. HDU 5514 Frogs 欧拉函数

    题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4 ...

  4. HDU 2841 Visible Trees(莫比乌斯反演)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意:给n*m的矩阵(从(1,1)开始编号)格子,每个格子有一棵树,人站在(0,0)的位置,求可 ...

  5. HDU 5321 Beautiful Set (莫比乌斯反演 + 逆元 + 组合数学)

    题意:给定一个 n 个数的集合,然后让你求两个值, 1.是将这个集合的数进行全排列后的每个区间的gcd之和. 2.是求这个集合的所有的子集的gcd乘以子集大小的和. 析:对于先求出len,len[i] ...

  6. HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. HDU 2841 容斥 或 反演

    $n,m <= 1e5$ ,$i<=n$,$j<=m$,求$(i⊥j)$对数 /** @Date : 2017-09-26 23:01:05 * @FileName: HDU 284 ...

  8. hdu 4676 Sum Of Gcd 莫队+phi反演

    Sum Of Gcd 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4676 Description Given you a sequence of ...

  9. HDU 6134 Battlestation Operational(莫比乌斯反演)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6134 [题目大意] 求$\sum_{i=1}^{n}{\sum_{j=1}^{i}\lceil{\ ...

随机推荐

  1. eclipse + maven + com.sun.jersey 创建 restful api

    maven 创建 jersey 项目 如果没找到 jersey archetype, 下载 maven 的 archetype xml, 然后导入 archetypes 运行 右击 main.java ...

  2. [ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-tags_2.11: Execution scala-compile-first of goal net.alchim31.maven:scala-mave

    build/mvn -Pkubernetes -Phadoop-2.7 -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver -DskipTests cl ...

  3. Unity光照与渲染设置学习笔记

    学习了一下unity中有关光照和渲染的一些设置,现在才明白之前遇到的一些问题只是没有正确设置而已. unity不同版本的光照设置会有一些差异,而且可以调节的参数非常多,这里只记录一些重要的参数和使用方 ...

  4. idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输

    众所周知,HTTPS是用来解决 HTTP 明文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数据运输 ...

  5. Selenium--数据驱动(python)

    前言: 什么是数据驱动? 从它的本意来解释,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.说人话,其实就是参数化. 本次介绍2种文件驱动:ini文件和yaml文件 一.ini文件 1 ...

  6. M1事后总结报告

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决外卖信息的碎片化和多平台化,通过信息整合的方式来给用户提供一个更优惠更快速方便的外卖平台. 我们的客 ...

  7. 接上 操作系统java项目设计图纸 一步一步在进化

  8. 第二个spring冲刺第8天

    今天我们团队分别安排了不同的任务,分别是1人程序编写,1人检查bug,1人负责客户体验,还有我们的总负责人王俊凯同学负责各个部分的协调.今天程序有了新的调整,但是功能还是没有完全做出来,不过还在开发途 ...

  9. VS2013快速安装教程

    1.下载vs2013安装镜像.VS2013_RTM_ULT_CHS.iso链接: http://pan.baidu.com/s/1mguOdiK密码: rllz  建议使用百度网盘客户端下载,虽然被人 ...

  10. [置顶网]POWER 9为云与智能打造强大引擎

    POWER 9为云与智能打造强大引擎 关键字: 浪潮商用机器 POWER9 至顶网服务器频道 (文/董培欣): 从全球角度看,政治经济波动持续.逆全球化趋势抬头.技术加速变革商业等因素促使企业需要数字 ...