【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 ...
随机推荐
- C#的位运算
链接地址: http://www.cnblogs.com/NetBelieve/archive/2012/07/30/2615006.html
- 基于 Ubuntu + nextCloud 搭建自己的私人网盘
提醒一下,如果之前通过apache搭建了网站,不要用snap命令来搭建,否则,至少有一个无法正常运行(不要问我怎么知道的,都是血的教训啊). 你可以通过腾讯云的实验主机进行尝试. 1.基础设置 切换为 ...
- lca(最近公共祖先(在线)) 倍增法详解
转自大佬博客 : https://blog.csdn.net/lw277232240/article/details/72870644 描述:倍增法用于很多算法当中,通过字面意思来理解 LCA是啥呢 ...
- Python01 VSCode开发环境和入门程序
1.Python的下载和安装 最新版本python3.7.3 https://www.python.org/downloads/release/python-373/ web-based: 在线安装包 ...
- 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 ...
- ios 设计模式总结
设计模式:备注:消息传递模型(Message Passing)是Objective-C语言的核心机制.在Objective-C中,没有方法调用这种说法,只有消息传递.在C++或Java中调用某个类的方 ...
- 【转】EM算法原理
EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用到了.在Mitchell的书中也提到EM可以用于贝叶 ...
- IE浏览器缓存问题解决方法(非常严重)
IE浏览器缓存问题解决方法整理 一.IE浏览器缓存的内容分析: IE浏览器会缓存网页中的GET和XHR的内容,并且在IE浏览器中如果请求方式是get方式的话,IE浏览器会进行识别,如果该get请求的u ...
- 【php】函数重载问题
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数.
- Confluence 导出为 PDF 格式 - 导出多个页面或者整个空间
使用 Confluence 的空间导出功能,你可以将多个页面或者整个 Confluence 站点转换为 PDF 文件. 希望使用空间导出功能,你需要 导出空间(Export Space)权限.请查看 ...