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

  这题我一开始一看,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. C#的位运算

    链接地址: http://www.cnblogs.com/NetBelieve/archive/2012/07/30/2615006.html

  2. 基于 Ubuntu + nextCloud 搭建自己的私人网盘

    提醒一下,如果之前通过apache搭建了网站,不要用snap命令来搭建,否则,至少有一个无法正常运行(不要问我怎么知道的,都是血的教训啊). 你可以通过腾讯云的实验主机进行尝试. 1.基础设置 切换为 ...

  3. lca(最近公共祖先(在线)) 倍增法详解

    转自大佬博客 : https://blog.csdn.net/lw277232240/article/details/72870644 描述:倍增法用于很多算法当中,通过字面意思来理解 LCA是啥呢 ...

  4. Python01 VSCode开发环境和入门程序

    1.Python的下载和安装 最新版本python3.7.3 https://www.python.org/downloads/release/python-373/ web-based: 在线安装包 ...

  5. AddDbContext was called with configuration, but the context type 'NewsContext' only declares a parameterless constructor?

    问题 An error occurred while starting the application. ArgumentException: AddDbContext was called with ...

  6. ios 设计模式总结

    设计模式:备注:消息传递模型(Message Passing)是Objective-C语言的核心机制.在Objective-C中,没有方法调用这种说法,只有消息传递.在C++或Java中调用某个类的方 ...

  7. 【转】EM算法原理

    EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶 ...

  8. IE浏览器缓存问题解决方法(非常严重)

    IE浏览器缓存问题解决方法整理 一.IE浏览器缓存的内容分析: IE浏览器会缓存网页中的GET和XHR的内容,并且在IE浏览器中如果请求方式是get方式的话,IE浏览器会进行识别,如果该get请求的u ...

  9. 【php】函数重载问题

    PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数.

  10. Confluence 导出为 PDF 格式 - 导出多个页面或者整个空间

    使用 Confluence 的空间导出功能,你可以将多个页面或者整个 Confluence 站点转换为 PDF 文件. 希望使用空间导出功能,你需要 导出空间(Export Space)权限.请查看 ...