就让我这样的蒟蒻发一个简单易想的题解吧!!!

  这题我一开始一看,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的问题(莫比乌斯反演)的更多相关文章

  1. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...

  2. [Luogu P3455] [POI2007]ZAP-Queries (莫比乌斯反演 )

    题面 传送门:洛咕 Solution 这题比这题不懂简单到哪里去了 好吧,我们来颓柿子. 为了防止重名,以下所有柿子中的\(x\)既是题目中的\(d\) 为了方便讨论,以下柿子均假设\(b>=a ...

  3. 【Luogu】P3455Zip-Queries(莫比乌斯反演)

    题目链接 真是神TM莫比乌斯 首先来看一个神奇的结论:求gcd(x,y)==k的对数,其中1<=x<=n,1<=y<=m 等同于求gcd(x,y)==1的对数,其中1<= ...

  4. 【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) ...

  5. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)

    手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csdn.net/suncongbo/article/details/78819470 URL: (Lu ...

  6. [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

    题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...

  7. [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...

  8. BZOJ 5330 Luogu P4607 [SDOI2018]反回文串 (莫比乌斯反演、Pollard Rho算法)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=5330 (Luogu) https://www.luogu.org/prob ...

  9. [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

随机推荐

  1. 51nod 1693 水群

    基准时间限制:0.4 秒 空间限制:524288 KB 分值: 160 难度:6级算法题  收藏  关注 总所周知,水群是一件很浪费时间的事,但是其实在水群这件事中,也可以找到一些有意思的东西. 比如 ...

  2. 【Python图像特征的音乐序列生成】思路的转变

    关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...

  3. 浅谈iOS学习之路

    转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...

  4. websocket+订阅发布者模式模拟实现股票价格实时刷新

    1.新建文件夹 2.文件夹中新建index.html 和 index.js index.html <!DOCTYPE html> <html lang="en"& ...

  5. 【转】Intellij IDEA 提交代码到远程GitHub仓库

    1.文章参考自:http://my.oschina.net/lujianing/blog/180728 2.设置相关绑定 Settings——Version Control——Git——Path to ...

  6. 01_3_创建一个Servlet

    01_3_创建一个Servlet 1.创建一个Servlet import java.io.IOException; import java.io.PrintWriter; import javax. ...

  7. Golang TCP转发到指定地址

    Golang TCP转发到指定地址 第二个版本,设置指定ip地址 代码 // tcpForward package main import ( "fmt" "net&qu ...

  8. python3和Python2的区别

    一.print函数 python2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象 二.通过input()解析用户的输入 python3中inp ...

  9. jenkins+maven+svn 自动化部署

    背景: 公司的web平台使用JAVA写的,但是不是用Tomcat部署的,代码内部自带了Web服务器,所以只需要有JAVA环境,将代码打包上传,启动脚本就可以. 项目是根据pom.xml打包成的是.zi ...

  10. Tomcat Bug记录

    1.问题:org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-IN ...