LG P6788 「EZEC-3」四月樱花
Description
在樱花盛开的四月,Muxii 望着满天飘落的樱花,向身旁的 ZZH 问道:
“究竟有多少朵樱花在这个四月飘落?”
ZZH 答道:“樱花飘落的朵数 $s$与时间 $t$ 有如下关系:
$s=\prod_{x=1}^t \prod_{y|x} \frac{y^{d(y)}}{\prod_{z|y}(z+1)^2}$
其中 $d(y)$ 表示 $y$ 的约数个数。”
但作为一个文科生萌新,Muxii 显然无法清楚地知道具体的数目,因此他只好继续向 ZZH 询问这个问题的答案。
由于数量可能很大,所以你只需要替 ZZH 告诉 Muxii 他所需要的答案对 $p$ 取模的结果就好了。
Solution
题中所求为
$$ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y}(z+1)^2}\right)\bmod p$$
大力操作式子:因为
$$y^{d(y)}=\prod_{z|y}y=\prod_{z|y}z\cdot\frac{y}{z}=\prod_{z|y}z^2$$
和
$$\sum_{z|y,y|n}=d(\frac{n}{z})$$
所以
$$s=\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y}(z+1)^2}=\prod_{x=1}^n\prod_{y|x}\prod_{z|y}\left(\frac{z}{z+1}\right)^2=\prod_{z=1}^n\left(\frac{z}{z+1}\right)^{2sumd(\lfloor\frac{n}{z}\rfloor)}$$
其中$sumd(n)=\sum_{i=1}^n d(i)$
由于要求$d$的前缀和,所以有杜教筛
设$f=d=1*1,g=\mu$,则$f*g=1*1*\mu=1$,可以使用杜教筛,现在需要求出$\mu$的前缀和
再次使用杜教筛即可
求原式的值可以用整除分块做
时间复杂度$\Theta(n^{\frac 23}+\sqrt{n}\log n)$

#include<iostream>
#include<cstdio>
using namespace std;
long long n,mod,pmod,prime[],mu[],minn[],d[],tot,summu[],sumd[],ans=;
bool isprime[],vst[];
inline long long read()
{
long long w=,f=;
char ch=;
while(ch<''||ch>'')
{
if(ch=='-')
f=-;
ch=getchar();
}
while(ch>=''&&ch<='')
{
w=(w<<)+(w<<)+ch-'';
ch=getchar();
}
return w*f;
}
long long Mu(long long x)
{
return x<=?mu[x]:summu[n/x];
}
long long D(long long x)
{
return x<=?d[x]:sumd[n/x];
}
void djs(long long N)
{
if(N<=||vst[n/N])
{
return;
}
vst[n/N]=true;
for(long long l=;l<=N;)
{
long long r=N/(N/l);
djs(N/l);
(summu[n/N]+=(pmod-(r-l+)*Mu(N/l)%pmod)%pmod)%=pmod;
l=r+;
}
(summu[n/N]+=)%=pmod;
for(long long l=;l<=N;)
{
long long r=N/(N/l);
(sumd[n/N]+=pmod-((Mu(r)-Mu(l-)+pmod)%pmod)*D(N/l)%pmod)%=pmod;
l=r+;
}
(sumd[n/N]+=N)%=pmod;
}
long long ksm(long long a,long long p)
{
long long ret=;
while(p)
{
if(p&)
{
(ret*=a)%=mod;
}
(a*=a)%=mod;
p>>=;
}
return ret;
}
int main()
{
n=read();
mod=read();
pmod=mod-;
mu[]=d[]=;
for(long long i=;i<=;i++)
{
if(!isprime[i])
{
prime[++tot]=i;
mu[i]=-;
d[i]=;
minn[i]=;
}
for(long long j=;j<=tot&&i*prime[j]<=;j++)
{
isprime[i*prime[j]]=true;
if(!(i%prime[j]))
{
minn[i*prime[j]]=minn[i]+;
d[i*prime[j]]=d[i]/(minn[i]+)*(minn[i*prime[j]]+);
mu[i*prime[j]]=;
break;
}
minn[i*prime[j]]=;
d[i*prime[j]]=d[i]*d[prime[j]];
mu[i*prime[j]]=mu[i]*-;
}
}
for(long long i=;i<=;i++)
{
(d[i]+=d[i-])%=pmod;
((mu[i]+=mu[i-])+=pmod)%=pmod;
}
djs(n);
for(long long l=;l<=n;)
{
long long r=n/(n/l);
(ans*=ksm(l*ksm(r+,mod-)%mod,D(n/l)))%=mod;
l=r+;
}
(ans*=ans)%=mod;
printf("%lld\n",ans);
return ;
}
四月樱花
LG P6788 「EZEC-3」四月樱花的更多相关文章
- 题解-洛谷P6788 「EZEC-3」四月樱花
题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...
- 洛谷 P6788 - 「EZEC-3」四月樱花(整除分块)
题面传送门 题意: 求 \[\prod\limits_{x=1}^n\prod\limits_{y|x}\frac{y^{d(y)}}{\prod\limits_{z|y}z+1} \pmod{p} ...
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- 「BZOJ 4228」Tibbar的后花园
「BZOJ 4228」Tibbar的后花园 Please contact lydsy2012@163.com! 警告 解题思路 可以证明最终的图中所有点的度数都 \(< 3\) ,且不存在环长是 ...
- 「BZOJ 3645」小朋友与二叉树
「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...
- 「PKUWC2018/PKUSC2018」试题选做
「PKUWC2018/PKUSC2018」试题选做 最近还没想好报THUSC还是PKUSC,THU发我的三类约(再来一瓶)不知道要不要用,甚至不知道营还办不办,协议还有没有用.所以这些事情就暂时先不管 ...
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 更新日志 - fir.im「高级统计」功能上线
距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...
随机推荐
- Python os.getcwdu() 方法
概述 os.getcwdu() 方法用于返回一个当前工作目录的Unicode对象.高佣联盟 www.cgewang.com Unix, Windows 系统下可用. 语法 getcwdu()方法语法格 ...
- PHP date_date_set() 函数
------------恢复内容开始------------ 实例 返回一个新的 DateTime 对象,设置一个新的日期,然后格式化日期: <?php$date=date_create();d ...
- java进阶(2)--抽象类
一.抽象类集刺虎: 1.概念 类与类之前有共同特征,将这些共同特征提取出来,行为抽象类 2.抽象类的数据类型: 引用数据类型 3.语法 [修饰符列表]abstract Class 类型{类体} ...
- python爬虫学习05-爬取图片
python爬虫学习05-爬取图片 确定要爬取的网址:https://shenan.tuchong.com/20903415/#image309854686 要爬取的内容:使用浏览器插件xpath对图 ...
- OAuth2.0-3客户端授权放到数据库
授权得客户端信息.授权码信息全都存在数据库 1.建表 官方给了个sql文件:https://github.com/spring-projects/spring-security-oauth/blob/ ...
- Python稳居编程语言榜首,看完这篇总结,你就明白为什么要学它了
最近,网上流传一组<人工智能实验教材>的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的! Python被列入小学.初高中教材已不是新鲜事,现在又成功“入侵”了幼儿园,对此有网友调侃 ...
- Python3.x+Fiddler抓取APP数据
随着移动互联网的市场份额逐步扩大,手机APP已经占据我们的生活,以往的数据分析都借助于爬虫爬取网页数据进行分析,但是新兴的产品有的只有APP,并没有网页端这对于想要提取数据的我们就遇到了些问题,本章以 ...
- 蜻蜓点水说说Redis的ziplist的奥秘
本篇博客参考: Redis 深度历险:核心原理与应用实践 Redis内部数据结构详解(4)--ziplist Redis的压缩列表ZipList 上篇博客中,我给大家蜻蜓点水般的介绍了Redis中SD ...
- Secure CRT连接VMware虚拟机中的CentOS 7
操作步骤: 1.安装Centos 7 虚拟机设置==>NetworkAdapter===>选择NAT(共享主机的IP地址), CTRL+ALT+F1切换到图形界面 选择右上角以太网打开 ...
- CSDN新版Markdown编辑器(Alpha 2.0版)
Markdown编辑器 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建 ...