【Luogu】P2303Longge的问题(莫比乌斯反演)
就让我这样的蒟蒻发一个简单易想的题解吧!!!
这题我一开始一看,woc这不是莫比乌斯反演么,推推推,推到杜教筛,输出结果一看不对
emmm回来仔细想想……woc推错了?
然后撕烤半天打了个暴力,A了
首先我们学过莫比乌斯反演的一般能够想到枚举gcd,记为w
所以我们需要求的就是$\sum\limits_{w|n}w\sum\limits_{w|i}[gcd(i,n)=w]$
然后……就到了激动人心的构造函数环节……
设$F(w)=\sum\limits_{w|i}[w|gcd(i,n)]$
$f(w)=\sum\limits_{w|i}[w=gcd(i,n)]$
于是有$F(w)=\sum\limits_{w|d}f(d)$
于是……$f(w)=\sum\limits_{w|d}\mu(\frac{d}{w})F(d)$
容易(个屁,我手玩了半年)发现,当$d|n$时$F(d)=\frac{n}{d}$,其他情况下$F(d)=0$
然后问题就变成了$\sum\limits_{w|n}w\sum\limits_{w|d}\mu(\frac{d}{w})F(d)$
设$t=\frac{d}{w}$
原式化为$\sum\limits_{w|n}w\sum\limits_{t|d}\mu(t)F(tw)$
然后我们发现了什么?
没错w可以暴力枚举qwq!没错t可以暴力枚举qwq!
因为我们枚举到根n就可以枚举出n的所有因子! t同理!
来吧让我们暴……等等$\mu$怎么算?
废话啊按着莫比乌斯函数的定义暴力qwq!
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<iostream>
#include<cmath>
#define maxn 5000020
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} bool vis[maxn];
int prime[maxn],tot;
int mu[maxn]; inline int calcmu(long long n){
if(n<maxn) return mu[n];
long long sqt=sqrt(n);
long long now=n;int ans=;
for(int j=;j<=tot;++j){
int i=prime[j];
if(i>sqt) break;
if(now%i) continue;
int cnt=;
while((now%i)==){
cnt++; now/=i;
if(cnt>) return ;
}
ans++;
}
if(now>) ans++;
if(ans&) return -;
else return ;
} int main(){
mu[]=vis[]=;
for(int i=;i<maxn;++i){
if(vis[i]==){
prime[++tot]=i;
mu[i]=-;
}
for(int j=;j<=tot&&prime[j]*i<maxn;++j){
vis[i*prime[j]]=;
if(i%prime[j]) mu[i*prime[j]]=-mu[i];
else break;
}
}
long long n=read(),ans=;
int sqt=sqrt(n);
for(int i=;i<=sqt;++i){
if(n%i) continue;
long long d=n/i;long long now=;
long long sar=sqrt(d);
for(int j=;j<=sar;++j){
if(d%j) continue;
now+=calcmu(j)*(n/(j*i));
if(j*j==d) continue;
now+=calcmu(d/j)*(n/((d/j)*i));
}
ans+=now*i; if(1LL*i*i==n) continue;
long long ret=n/i;
d=n/ret;now=;
sar=sqrt(d);
for(int j=;j<=sar;++j){
if(d%j) continue;
now+=calcmu(j)*(n/(j*ret));
if(j*j==d) continue;
now+=calcmu(d/j)*(n/((d/j)*ret));
}
ans+=now*ret;
}
printf("%lld\n",ans);
return ;
}
【Luogu】P2303Longge的问题(莫比乌斯反演)的更多相关文章
- BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)
手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...
- [Luogu P3455] [POI2007]ZAP-Queries (莫比乌斯反演 )
题面 传送门:洛咕 Solution 这题比这题不懂简单到哪里去了 好吧,我们来颓柿子. 为了防止重名,以下所有柿子中的\(x\)既是题目中的\(d\) 为了方便讨论,以下柿子均假设\(b>=a ...
- 【Luogu】P3455Zip-Queries(莫比乌斯反演)
题目链接 真是神TM莫比乌斯 首先来看一个神奇的结论:求gcd(x,y)==k的对数,其中1<=x<=n,1<=y<=m 等同于求gcd(x,y)==1的对数,其中1<= ...
- 【Luogu】P2522Problemb(莫比乌斯反演)
题目链接 同Zip—Queries,但是用到容斥原理 设f(n,m)是(x,y)的对数,其中1<=x<=n,1<=y<=m 则有f(n,m)-f(a-1,n)-f(b-1,m) ...
- BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)
手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csdn.net/suncongbo/article/details/78819470 URL: (Lu ...
- [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)
题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...
- [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)
题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...
- BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...
- [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)
题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...
随机推荐
- 51nod 1693 水群
基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题 收藏 关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如 ...
- 【Python图像特征的音乐序列生成】思路的转变
关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...
- 浅谈iOS学习之路
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- websocket+订阅发布者模式模拟实现股票价格实时刷新
1.新建文件夹 2.文件夹中新建index.html 和 index.js index.html <!DOCTYPE html> <html lang="en"& ...
- 【转】Intellij IDEA 提交代码到远程GitHub仓库
1.文章参考自:http://my.oschina.net/lujianing/blog/180728 2.设置相关绑定 Settings——Version Control——Git——Path to ...
- 01_3_创建一个Servlet
01_3_创建一个Servlet 1.创建一个Servlet import java.io.IOException; import java.io.PrintWriter; import javax. ...
- Golang TCP转发到指定地址
Golang TCP转发到指定地址 第二个版本,设置指定ip地址 代码 // tcpForward package main import ( "fmt" "net&qu ...
- python3和Python2的区别
一.print函数 python2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象 二.通过input()解析用户的输入 python3中inp ...
- jenkins+maven+svn 自动化部署
背景: 公司的web平台使用JAVA写的,但是不是用Tomcat部署的,代码内部自带了Web服务器,所以只需要有JAVA环境,将代码打包上传,启动脚本就可以. 项目是根据pom.xml打包成的是.zi ...
- Tomcat Bug记录
1.问题:org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-IN ...