Loj#572. 「LibreOJ Round #11」Misaka Network 与求和
有生之年我竟然能\(A\)
这个题求的是这个
\]
\(f(i)\)定义为\(i\)的次大质因子,其中\(f(p)=1,f(1)=0\)
看到这道题的第一反应肯定是这东西TM还能求
习惯性反演
\]
\]
\]
现在处理后面那个\(\mu\times f\)的前缀和就可以整除分块了
看到数据范围不小,考虑杜教筛,在卷上一个\(I\),把\(\mu\)消掉
于是就有
\]
发现只需要求出\(\sum_{i=1}^nf(i)^k\)就可以杜教筛了
这个东西显然可以被Min_25处理,就是算次大质因子的时候贡献算成\(k\)次方即可
代码
#include <tr1/unordered_map>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define maxn 3000005
#define re register
#define LL unsigned long long
using namespace std::tr1;
unordered_map<LL,LL> ma;
LL n,p[maxn],w[maxn],id1[maxn],id2[maxn],K,mu[maxn],Sqr;
LL m,f[maxn],tot,F[maxn][2],pre[maxn],D[maxn],g[maxn];
inline LL quick(LL a,LL b) {LL s=1;while(b) {if(b&1ll) s*=a;b>>=1ll;a*=a;}return s;}
inline LL S(LL x,int y) {
if(x<=1&&p[y]>x) return 0;
LL ans=0;
for(re int k=y;k<=tot&&1ll*p[k]*p[k]<=x;k++) {
LL p1=p[k];
for(;p1<=x;p1*=p[k]) {
ans+=S(x/p1,k+1);
LL t=g[(x/p1<=Sqr)?id1[x/p1]:id2[n/(x/p1)]];
if(t+1>k) ans+=(t+1-k)*D[p[k]];
}
}
return ans;
}
LL calc(LL x) {
if(x<=Sqr) return pre[x];
if(ma[x]) return ma[x];
LL cnt=S(x,1)+g[id2[n/x]];
for(re LL l=2,r;l<=x;l=r+1) {
r=x/(x/l);cnt-=(r-l+1)*calc(x/l);
}
return ma[x]=cnt;
}
int main()
{
scanf("%u%u",&n,&K);Sqr=std::pow(n,0.666);
for(re LL l=1,r;l<=n;l=r+1) {
r=n/(n/l);w[++m]=n/l;
if(w[m]<=Sqr) id1[w[m]]=m;else id2[n/w[m]]=m;
g[m]=w[m]-1;
}
f[1]=1;D[1]=1;mu[1]=1;
for(re int i=2;i<=Sqr;i++) {
if(!f[i]) p[++tot]=i,D[i]=quick(i,K),mu[i]=-1;
for(re int j=1;j<=tot&&p[j]*i<=Sqr;j++) {
f[p[j]*i]=1;if(i%p[j]==0) break;mu[p[j]*i]=-1*mu[i];
}
}
for(re int j=1;j<=tot&&1ll*p[j]*p[j]<=n;j++)
for(re int i=1;i<=m&&1ll*p[j]*p[j]<=w[i];i++) {
int k=(w[i]/p[j]<=Sqr)?id1[w[i]/p[j]]:id2[n/(w[i]/p[j])];
g[i]=g[i]-g[k]+j-1;
}
memset(f,0,sizeof(f));f[1]=1;
for(re int i=2;i<=Sqr;i++){
if(f[i]) continue;
F[i][1]=1;
for(re int j=i+i;j<=Sqr;j+=i) f[j]=1,F[j][1]=F[j][0],F[j][0]=i;
}
for(re int i=2;i<=Sqr;i++)
if(f[i]&&!F[i][1]) F[i][1]=F[i][0];
for(re int i=2;i<=Sqr;i++)
if(f[i]&&(i/F[i][0])%F[i][0]==0) F[i][1]=F[i][0];
for(re int i=1;i<=Sqr;i++)
for(re int j=i;j<=Sqr;j+=i)
pre[j]+=mu[j/i]*D[F[i][1]];
for(re int i=1;i<=Sqr;i++) pre[i]+=pre[i-1];
LL now=0;
for(re LL l=1,r;l<=n;l=r+1) {
r=n/(n/l);
now+=(n/l)*(n/l)*(calc(r)-calc(l-1));
}
printf("%u",(unsigned int)now);
return 0;
}
Loj#572. 「LibreOJ Round #11」Misaka Network 与求和的更多相关文章
- LOJ 572 「LibreOJ Round #11」Misaka Network 与求和——min_25筛
题目:https://loj.ac/problem/572 莫比乌斯反演得 \( ans=\sum\limits_{D=1}^{n}\left\lfloor\frac{n}{D}\right\rflo ...
- LOJ# 572. 「LibreOJ Round #11」Misaka Network 与求和(min25筛,杜教筛,莫比乌斯反演)
题意 求 \[ \sum_{i = 1}^{n} \sum_{i = 1}^{n} f(\gcd(i, j))^k \pmod {2^{32}} \] 其中 \(f(x)\) 为 \(x\) 的次大质 ...
- LOJ572. 「LibreOJ Round #11」Misaka Network 与求和 [莫比乌斯反演,杜教筛,min_25筛]
传送门 思路 (以下令\(F(n)=f(n)^k\)) 首先肯定要莫比乌斯反演,那么可以推出: \[ ans=\sum_{T=1}^n \lfloor\frac n T\rfloor^2\sum_{d ...
- [LOJ#530]「LibreOJ β Round #5」最小倍数
[LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...
- [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
[LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...
- [LOJ#531]「LibreOJ β Round #5」游戏
[LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...
- [LOJ#515]「LibreOJ β Round #2」贪心只能过样例
[LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...
- [LOJ#525]「LibreOJ β Round #4」多项式
[LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...
- [LOJ#526]「LibreOJ β Round #4」子集
[LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...
随机推荐
- json数据发送时浏览器提示“保存”解决
数据以json形式发送的时候,部分浏览器不能直接解析,而是提示是否保存,nodejs的express应用中可以通过如下代码解决该问题: router.get('/', function (req, r ...
- 三:Maven创建问题
1.httpServlet was not found 设置server为tomcat,jre设置为安装的jdk的jre java build path 添加server runtime为tomcat ...
- 在CentOS 7下更改yum源与更新系统
在CentOS 7下更改yum源与更新系统. [1] 首先备份/etc/yum.repos.d/CentOS-Base.repo cp /etc/yum.repos.d/CentOS-Base.rep ...
- Windows Server 2008 R2 搭建网站详细教程
转自:http://jingyan.baidu.com/album/642c9d34098bf5644a46f71f.html?picindex=4 网上都有一些Windows Server 2008 ...
- Mybatis执行sql(insert、update、delete)返回值问题
数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下. 结论: insert: 插入n条记录,返回影响行数n.(n>=1,n为0时实际为插入失败) up ...
- 网站大于10M的视频不能播放
IIS配置的网站,添加了几个mp4视频,有个可以正常播放,有的却不加载不出来,提示错误: net::ERR_CONNECTION_ABORTED 网上有文章说是由于安全狗bug导致,下载安装一个补丁覆 ...
- js实现浏览器窗口缩放刷新
两行代码 $(window).resize(function () { location.reload(); })
- mysql load data infile auto increment id
1. 问题描述 当使用load data infile 向表中插入数据 而主键id是 auto_increment 时 ,执行 load data 不会报错 但插入也不成功 2. 问题解决 2.1 方 ...
- Codeforces183D T-shirt
传送门 这题好神啊……(然而我连每种物品贡献独立都没看出来…… 首先$O(n^2 m)$的DP肯定都会写,然后可以发现每种物品一定是选得越多再选一个的收益就越低,因此可以用一个堆维护当前收益最高的物品 ...
- Jmeter CSV 参数化/检查点/断言
当参数的值没有规律且量不太大时,可以使用CSV Data set config这种方法. 案例: 应用Sogou自动搜索关键字: 软件开发测试,web功能自动化测试,性能自动化测试,Selenium以 ...