题面传送门

题意:

\[\prod\limits_{x=1}^n\prod\limits_{y|x}\frac{y^{d(y)}}{\prod\limits_{z|y}z+1} \pmod{p}
\]

\(1 \leq n \leq 10^9\)

\[y^{d(y)}=\prod_{z|y}y=\prod\limits_{z|y}z\times\frac{y}{z}=\prod\limits_{z|y}z^2
\]

然后

\[\begin{aligned}ans&=\prod\limits_{x=1}^n\prod\limits_{y|x}\frac{y^{d(y)}}{\prod\limits_{z|y}z+1}\\&=\prod\limits_{x=1}^n\prod\limits_{y|x}\prod\limits_{z|y}(\frac{z}{z+1})^2\\&=\prod_{z=1}^n(\frac{z}{z+1})^{2\times\sum\limits_{xyz \leq n}1}\\&=\prod_{z=1}^n(\frac{z}{z+1})^{2\times\sum\limits_{y \leq \frac{n}{z}}\lfloor\frac{n}{yz}\rfloor}\end{aligned}
\]

令 \(f(i)=\sum\limits_{i=1}^n\lfloor\frac{n}{i}\rfloor\),那么 \(ans=\prod_{z=1}^n(\frac{z}{z+1})^{2\times f(\lfloor\frac{n}{z}\rfloor)}\)。

\(f(i)\) 显然可以用整除分块来搞。我们发现外面枚举 \(z\) 的部分也可以使用整除分块,因此可以想到整除分块套整除分块,时间复杂度 \(\mathcal O(n^{\frac{3}{4}})\)

借鉴杜教筛的优化方法,可以预处理出 \([1,n^{\frac{2}{3}}]\) 的 \(f(i)\),这样总时间复杂度就变为 \(\mathcal O(n^{\frac{2}{3}})\)

/*
Contest: -
Problem: P6788
Author: tzc_wk
Time: 2020.9.19
*/
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define fz(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define foreach(it,v) for(__typeof(v.begin()) it=v.begin();it!=v.end();it++)
#define all(a) a.begin(),a.end()
#define fill0(a) memset(a,0,sizeof(a))
#define fill1(a) memset(a,-1,sizeof(a))
#define fillbig(a) memset(a,0x3f,sizeof(a))
#define y1 y1010101010101
#define y0 y0101010101010
#define int long long
typedef pair<int,int> pii;
typedef long long ll;
inline int read(){
int x=0,neg=1;char c=getchar();
while(!isdigit(c)){
if(c=='-') neg=-1;
c=getchar();
}
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x*neg;
}
int n=read(),mod=read();
inline int qpow(int x,int e){
x%=mod;int ans=1;
while(e){
if(e&1) ans=ans*x%mod;
x=x*x%mod;e>>=1;
}
return ans;
}
int f[1000005];
inline int calc(int x){
if(x<=1000000) return f[x];
int sum=0;
for(int l=1,r;l<=x;l=r+1){
r=x/(x/l);
sum=(sum+(x/l)%(mod-1)*(r-l+1)%(mod-1))%(mod-1);
}
return sum;
}
inline void prework(int m){
fz(i,1,m) for(int j=i;j<=m;j+=i) f[j]++;
fz(i,1,m) f[i]=(f[i]+f[i-1])%(mod-1);
}
signed main(){
prework(1000000);int ans=1;
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);
int xx=qpow((r+1)%mod,mod-2)*(l%mod)%mod;xx=xx*xx%mod;
ans=ans*qpow(xx,calc(n/l))%mod;
}
printf("%lld\n",ans);
return 0;
}

洛谷 P6788 - 「EZEC-3」四月樱花(整除分块)的更多相关文章

  1. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  2. 洛谷比赛 「EZEC」 Round 4

    洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...

  3. [洛谷P3701]「伪模板」主席树

    题目大意:太暴力了,就不写了,看这儿 题解:对于每个$byx$的人,从源点向人连边,容量为此人的寿命. 对于每个手气君的人,从人向汇点连边,容量为此人的寿命. 对于每个$byx$的人与手气君的人,如果 ...

  4. LOJ 3119: 洛谷 P5400: 「CTS2019 | CTSC2019」随机立方体

    题目传送门:LOJ #3119. 题意简述: 题目说的很清楚了. 题解: 记恰好有 \(i\) 个极大的数的方案数为 \(\mathrm{cnt}[i]\),则答案为 \(\displaystyle\ ...

  5. LOJ 3120: 洛谷 P5401: 「CTS2019 | CTSC2019」珍珠

    题目传送门:LOJ #3120. 题意简述: 称一个长度为 \(n\),元素取值为 \([1,D]\) 的整数序列是合法的,当且仅当其中能够选出至少 \(m\) 对相同元素(不能重复选出元素). 问合 ...

  6. 洛谷 P2257 - YY的GCD(莫比乌斯反演+整除分块)

    题面传送门 题意: 求满足 \(1 \leq x \leq n\),\(1 \leq y \leq m\),\(\gcd(x,y)\) 为质数的数对 \((x,y)\) 的个数. \(T\) 组询问. ...

  7. 洛谷 P4710 「物理」平抛运动

    洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...

  8. LOJ 2743(洛谷 4365) 「九省联考 2018」秘密袭击——整体DP+插值思想

    题目:https://loj.ac/problem/2473 https://www.luogu.org/problemnew/show/P4365 参考:https://blog.csdn.net/ ...

  9. 洛谷 P7879 -「SWTR-07」How to AK NOI?(后缀自动机+线段树维护矩乘)

    洛谷题面传送门 orz 一发出题人(话说我 AC 这道题的时候,出题人好像就坐在我的右侧呢/cy/cy) 考虑一个很 naive 的 DP,\(dp_i\) 表示 \([l,i]\) 之间的字符串是否 ...

随机推荐

  1. 错误 Unresolved reference 'AF_INET' 解决办法

    错误代码如下: import socketserer_socket = socket.socket(AF_INET, SOCK_DGAM) 错误信息: 原因分析: 1.AF_INET,SOCK_DGA ...

  2. 5.27日Scrum Metting

    日期:2021年5月27日 会议主要内容概述:确定账单数据格式,确定需要添加新的图表,确定模板分享功能任务量. 一.进度情况# 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 ...

  3. RSA加密——前端JSEncrypt

    RSA加密--前端JSEncrypt 介绍 ​ JSEncrypt是一个RSA加密库,在没有SSL加密传输通道支持https协议的情况下,该库可以在http传输重要信息如时,保证数据的安全性.我们小组 ...

  4. elf文件--基于《ctf竞赛权威指南pwn篇》

    1.ELF概念: ELF(Executable and Linkable Format),即"可执行可链接格式",最初由UNIX系统实验室作为应用程序二进制接口(Applicati ...

  5. 搬运3:welpwnctf题目

    记录一道自己做的ctf题目:welpwn --RCTF-2015 1.老生常谈checksec查看: 可以看到只开了nx保护,下面我们进入ida下面看看. 发现是一个想rbp-400,rsp+0h的地 ...

  6. MD支持程度测试

    Editor.md 目录 (Table of Contents) [TOCM] 目录 Editor.md Heading 1 Heading 2 Heading 3 Heading 4 Heading ...

  7. mysql查看数据库大小

    要想知道每个数据库的大小的话,步骤如下: 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有数据的大小: s ...

  8. vue中main.js配置后端请求地址

    Vue.config.productionTip = false; axios.defaults.baseURL = 'http://127.0.0.1:8003/';//后端开发环境地址 // ax ...

  9. SpringBoot 整合 Docker

    最近备忘录新加的东西倒是挺多的,但到了新环境水土不服没动力去整理笔记 1. Demo Project 首先准备一个简单的项目,用来部署到 Docker 主机上,并且能验证该项目是否成功运行 1.1 接 ...

  10. 移动GPU分类/百科

    ARM mali gpu四大微架构概述 https://zhuanlan.zhihu.com/p/107141045 http://www.neardi.com/news_23/487.html