题意:\( g(k) = 2^{f(k)} \) ,求\( \sum_{i = 1}^{n} g(i) \),其中\( f(k)\)代表k的素因子个数。

思路:题目意思很简单,但是着重于推导和简化,这是数论题的一贯思路,其中g(k)的方程可以看出是求k的无平方因子的个数,那么题目就是求1~n的无平方因字数的和了。

首先我们可以从莫比乌斯函数入手。

从\( \mu(d) \)的性质有,当d为素数单次连积时\( \mu(d)=(-1)^k\),其余d不为1时\( \mu(d)=0\)

那么可知\( \mu^{2}(d) \)在d满足条件时一定为正值1,故g(k)可化为\( \sum_{d | i} \mu^{2}(d) \) 且$$ans = \sum_{i = 1}^{n}{\sum_{d | i} \mu^{2}(d)} $$

接下来从容斥方向考虑。其实我们直接枚举素因子连乘的k,那么由\(\mu(d)\)函数的性质,可知当存在\(k^2 | d\)时,\(\mu(k)\)是不为0的,这样就去掉了素因子次数大于等于2的d,那么式子又可化成$$ {\mu^{2}(d)}= { \sum_{k^2|d}{\mu(k)} }$$

进一步$${\sum_{k=1}^{n}\sum_{k^2 | d} {\mu(k)}\lfloor\frac{n}{d}\rfloor }$$

\(\lfloor\frac{n}{d}\rfloor\)是1~n中被d整除的个数。

其中d为k^2的整倍数。

交换求和符号,将式子化成

$$\sum_{k = 1}^{n}{\mu(k)}\sum_{i=1}^{\lfloor \frac{n}{k^2}\rfloor} \lfloor \frac{n}{k^{2} i} \rfloor$$

接着枚举倍数求和就可以了,其中后个求和函数在1e6范围内可以预处理。

/** @Date    : 2016-12-04-22.09
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version :
*/ #include<bits/stdc++.h>
#define LL long long
#define PII pair
#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 = 1e6+20;
const LL mod = 1e9 + 7;
const double eps = 1e-8; int sum1[N];
int pri[N];
int mu[N];
bool vis[N];
int c = 0; void mobius()
{
MMF(vis);
mu[1] = 1; for(int i = 2; i < N; i++)
{
if(!vis[i])
pri[c++] = i, mu[i] = -1;
for(int j = 0; j < c && i * pri[j] < N; j++)
{
vis[i * pri[j]] = 1;
if(i % pri[j])
mu[i * pri[j]] = -mu[i];
else
{
mu[i * pri[j]] = 0;
break;
}
}
}
} int sum(LL n)//
{
if(n < N && sum1[n])//小于N下且已经处理了直接返回预处理的值
return sum1[n];
LL t = 0;
for(LL i = 1, j = 0; i <= n; i = j + 1)
{
j = n / (n / i);
t += n / i * (j - i + 1);//优化,大于n一半的直接加
}
t %= mod;
if(n >= N)
return t;
else
return sum1[n] = t; } int main()
{
int T;
mobius();
while(~scanf("%d", &T))
{
int cnt = 0;
while(T--)
{
LL n;
LL ans = 0;
scanf("%lld", &n);
for(LL i = 1; i <= n / i; i++)//枚举sqrt(n)的因子
if(mu[i])
ans = (ans + sum(n/i/i) * mu[i]) % mod;//注意i取整 printf("Case #%d: %lld\n", ++cnt, (ans + mod) % mod);
}
} return 0;
}

HDU 5942 Just a Math Problem 容斥 莫比乌斯反演的更多相关文章

  1. 【二分+容斥+莫比乌斯反演】BZOJ2440 完全平方数

    Description 求第k个没有完全平方因子的数,k<=1e9. Solution 这其实就是要求第k个µ[i](莫比乌斯函数)不为0的数. 然而k太大数组开不下来是吧,于是这么处理. 二分 ...

  2. cf900D. Unusual Sequences(容斥 莫比乌斯反演)

    题意 题目链接 Sol 首先若y % x不为0则答案为0 否则,问题可以转化为,有多少个数列满足和为y/x,且整个序列的gcd=1 考虑容斥,设\(g[i]\)表示满足和为\(i\)的序列的方案数,显 ...

  3. 51nod 1355 - 斐波那契的最小公倍数(Min-Max 容斥+莫比乌斯反演)

    vjudge 题面传送门 首先我们知道斐波那契数列的 lcm 是不太容易计算的,但是它们的 gcd 非常容易计算--\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\),该性质已在我的这篇博 ...

  4. bzoj 2005 & 洛谷 P1447 [ Noi 2010 ] 能量采集 —— 容斥 / 莫比乌斯反演

    题目:bzoj 2005 https://www.lydsy.com/JudgeOnline/problem.php?id=2005   洛谷 P1447 https://www.luogu.org/ ...

  5. HDU - 5942 :Just a Math Problem (莫比乌斯)

    题意:略. 思路:问题转化为1到N,他们的满足mu[d]!=0的因子d个数.  即1到N的因子的莫比乌斯系数平方和. (经验:累加符号是累加的个数,我们把常数提到前面,然后用杜教筛累加个数即可. ht ...

  6. Codeforces.547C.Mike and Foam(容斥/莫比乌斯反演)

    题目链接 \(Description\) 给定n个数(\(1\leq a_i\leq 5*10^5\)),每次从这n个数中选一个,如果当前集合中没有就加入集合,有就从集合中删去.每次操作后输出集合中互 ...

  7. BZOJ4833: [Lydsy1704月赛]最小公倍佩尔数(min-max容斥&莫比乌斯反演)(线性多项式多个数求LCM)

    4833: [Lydsy1704月赛]最小公倍佩尔数 Time Limit: 8 Sec  Memory Limit: 128 MBSubmit: 240  Solved: 118[Submit][S ...

  8. HDU 2841 容斥 或 反演

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

  9. 【题解】[HAOI2018]染色(NTT+容斥/二项式反演)

    [题解][HAOI2018]染色(NTT+容斥/二项式反演) 可以直接写出式子: \[ f(x)={m \choose x}n!{(\dfrac 1 {(Sx)!})}^x(m-x)^{n-Sx}\d ...

随机推荐

  1. Appium基础环境搭建(windows)---基于python

    1  JDK安装 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装注意:安装 ...

  2. 《javascript模式--by Stoyan Stefanov》书摘--汇总

    <javascript模式--by Stoyan Stefanov>书摘--基本技巧 http://www.cnblogs.com/liubei/p/JavascriptModeLog1. ...

  3. Centos7 下nginx nginx-1.13.4 安装

    环境:CentOS Linux release 7.3.1611 (Core)  Linux localhost.localdomain 3.10.0-514.26.2.el7.x86_64 #1 S ...

  4. Thunder团队第六周 - Scrum会议3

    Scrum会议3 小组名称:Thunder 项目名称:i阅app Scrum Master:李传康 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...

  5. Thunder团队Beta周贡献分规则

    小组名称:Thunder 项目名称:i阅app 组长:王航 成员:李传康.翟宇豪.邹双黛.苗威.宋雨.胡佑蓉.杨梓瑞 分配规则 规则1:基础分,拿出总分的20%(8分)进行均分,剩下的80%(32分) ...

  6. Java 动态绑定和多态

    动态绑定和多态 动态绑定是指:"在执行程序期间(而非编译期间),判断引用所指对象的实际类型,调用其相应的方法." 动态绑定(多态)存在的条件 要有继承. 要有重写. 父类引用指向子 ...

  7. JavaScript控制href属性进行钓鱼

    前一阵子,发现JavaScript中允许临时改变<a>标签的href属性,当改变其属性后你点击它可能看不出有多严重,但是,它可以通过欺骗手段来诱骗用户透露他们的详细资料. // Uncom ...

  8. eclipse 创建并运行maven web项目

    这两天想在eclipse上运行maven web项目,折腾了许久,总算success啦. 1,利用eclipse创建dynamic web project(eclipse需要安装m2eclipse). ...

  9. 【刷题】BZOJ 3175 [Tjoi2013]攻击装置

    Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照"日"字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1), ...

  10. [洛谷P5174]圆点

    题目大意:给你$R(R\leqslant10^{14})$,求:$$\sum\limits_{x\in\mathbb{Z}}\sum\limits_{y\in\mathbb{Z}}[x^2+y^2\l ...