#树状数组,欧拉函数#CF594D REQ
题目
给定 \(n\) 个数,求 \(\varphi(\prod_{i=l}^r{a_i})\)
分析
考虑单个欧拉函数的求法,只需要求出这个数的质因数计算即可。
那么考虑离线,枚举右端点,记录每个质因数的最晚出现位置,
那么在上一位置乘上 \(\frac{p}{p-1}\),在当前位置乘上 \(\frac{p-1}{p}\),树状数组维护即可
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=200011,M=1000000,mod=1000000007; struct rec{int y,next;}e[N];
int c[N],inv[N*5],prime[N],v[N*5],Fac[N],Inv[N],Cnt,a[N],las[N*5],n,Q,as[N],ans[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline signed ksm(int x,int y){
rr int ans=1;
for (;y;y>>=1,x=1ll*x*x%mod)
if (y&1) ans=1ll*ans*x%mod;
return ans;
}
inline void update(int x,int y){
for (;x<=n;x+=-x&x) c[x]=1ll*c[x]*y%mod;
}
inline signed query(int x){
rr int ans=1;
for (;x;x-=-x&x) ans=1ll*ans*c[x]%mod;
return ans;
}
signed main(){
n=iut(),inv[0]=Fac[0]=inv[1]=v[1]=1;
for (rr int i=2;i<=M;++i){
inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
if (!v[i]) prime[++Cnt]=v[i]=i;
for (rr int j=1;j<=Cnt&&prime[j]<=M/i;++j){
v[i*prime[j]]=prime[j];
if (i%prime[j]==0) break;
}
}
for (rr int i=1;i<=n;++i) a[i]=iut(),Fac[i]=1ll*Fac[i-1]*a[i]%mod;
Inv[n]=ksm(Fac[n],mod-2),Q=iut();
for (rr int i=n;i;--i) Inv[i-1]=1ll*Inv[i]*a[i]%mod,c[i]=1;
for (rr int i=1;i<=Q;++i){
rr int l=iut(),r=iut();
e[i]=(rec){l-1,as[r]},as[r]=i;
}
for (rr int i=1;i<=n;++i){
while (a[i]>1){
rr int now=v[a[i]];
if (las[now]) update(las[now],inv[now-1]+1);
update(i,mod-inv[now]+1),las[now]=i;
while (a[i]%now==0) a[i]/=now;
}
rr int t=1ll*Fac[i]*query(i)%mod;
for (rr int j=as[i];j;j=e[j].next)
if (e[j].y) ans[j]=1ll*Inv[e[j].y]*t%mod*ksm(query(e[j].y),mod-2)%mod;
else ans[j]=t;
}
for (rr int i=1;i<=Q;++i) print(ans[i]),putchar(10);
return 0;
}
#树状数组,欧拉函数#CF594D REQ的更多相关文章
- 51nod 1642 区间欧拉函数 && codeforce594D REQ
画一下柿子就知道是求区间乘积乘区间内所有质因数的(p-1)/p(就是求欧拉的公式嘛) 看上去莫队就很靠谱然而时间O(nsqrt(n)logn)并不资瓷 还是离线,确定右端点,对于1~i的区间内的质因数 ...
- Codeforces 597C. Subsequences (树状数组+dp)
题目链接:http://codeforces.com/contest/597/problem/C 给你n和数(1~n各不同),问你长为k+1的上升自序列有多少. dp[i][j] 表示末尾数字为i 长 ...
- ZOJ 2112 Dynamic Rankings(树状数组+主席树)
The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...
- HYSBZ - 3813 奇数国 欧拉函数+树状数组(线段树)
HYSBZ - 3813奇数国 中文题,巨苟题,巨无敌苟!!首先是关于不相冲数,也就是互质数的处理,欧拉函数是可以求出互质数,但是这里的product非常大,最小都2100000,这是不可能实现的.所 ...
- CF1114F Please, another Queries on Array?(线段树,数论,欧拉函数,状态压缩)
这题我在考场上也是想出了正解的……但是没调出来. 题目链接:CF原网 题目大意:给一个长度为 $n$ 的序列 $a$,$q$ 个操作:区间乘 $x$,求区间乘积的欧拉函数模 $10^9+7$ 的值. ...
- BZOJ 4026 dC Loves Number Theory (主席树+数论+欧拉函数)
题目大意:给你一个序列,求出指定区间的(l<=i<=r) mod 1000777 的值 还复习了欧拉函数以及线性筛逆元 考虑欧拉函数的的性质,(l<=i<=r),等价于 (p[ ...
- Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树
https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...
- 「10.10」神炎皇(欧拉函数)·降雷皇(线段树,DP)·幻魔皇
A. 神炎皇 很好的一道题,可能第一次在考场上遇到欧拉函数 题意:对于一个整数对 $(a,b)$,若满足 $a\times b\leq n$且$a+b$是$a\times b$的因子, 则称为神奇的数 ...
- LightOJ 1370 Bi-shoe and Phi-shoe 欧拉函数+线段树
分析:对于每个数,找到欧拉函数值大于它的,且标号最小的,预处理欧拉函数,然后按值建线段树就可以了 #include <iostream> #include <stdio.h> ...
- loj1370(欧拉函数+线段树)
传送门:Bi-shoe and Phi-shoe 题意:给出多个n(1<=n<=1e6),求满足phi(x)>=n的最小的x之和. 分析:先预处理出1~1e6的欧拉函数,然后建立一颗 ...
随机推荐
- golang常用库:gorilla/mux-http路由库使用
golang常用库:gorilla/mux-http路由库使用 golang常用库:配置文件解析库/管理工具-viper使用 golang常用库:操作数据库的orm框架-gorm基本使用 一:gola ...
- 案例分享:Qt出版社书籍配套U盘资源播放器软件定制(脚本关联播放器与资源文件,播放器,兼容win7,win10和mac)
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术.树莓派.三维.OpenCV.OpenGL.ffmpeg.OSG.单片机.软硬结合等等)持续更新中-(点击传送门) 合作案例专栏:案例分享(体 ...
- 国内如何快速访问GitHub
1.国内如何快速访问gibhub -FQ的方法无非就是用软件,这种就不介绍了 -本次介绍的是修改本地系统主机hosts文件,绕过国内dns解析,达到快速访问github 打开https://tool. ...
- cmake安装及报错解决办法
安装 yum install cmake 报错 centOS8(x86_64 或 aarch64) 系统下 yum或dnf 默认安装的 cmake-3.18.2-11.el8版本,安装后无法使用,出现 ...
- Vue3学习(二十)- 富文本插件wangeditor的使用
写在前面 学习.写作.工作.生活,都跟心情有很大关系,甚至有时候我更喜欢一个人独处,戴上耳机coding的感觉. 明显现在的心情,比中午和上午好多了,心情超棒的,靠自己解决了两个问题: 新增的时候点击 ...
- 教程|在矩池云使用 Stable Diffusion web UI v1.5 模型和 ControlNet 插件
今天给大家介绍下如何在矩池云使用 Stable Diffusion web UI v1.5 模型和 Stable Diffusion ControlNet 插件. 租用机器 租用机器需要选择内存大于8 ...
- 【Azure 应用服务】Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误
问题描述 Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误 问题解答 在Function App的门户页面中, ...
- 【Azure 环境】如果Azure中的某一个资源被删除后是否可以查看到删除的记录呢?如Resource Group
问题描述 当一个资源从Azure中删除后,是否有地方可以查看到这些操作的记录呢?如操作人,操作时间等. 问题解答 可以的.通过 Azure订阅页面的活动日志,可以查看所有对订阅下资源的操作记录,包含D ...
- 影刀rpa第一个学习项目开发所得
1.我要在某个位置新增一条指令,但是可能没有选择好的原因,这条指令被添加到指令的最后面了,我的指令行数有几十行,然后我就要把这条指令拖动到上一屏我指定的位置上,但当我拖动指令到了当前屏最上方时,发现编 ...
- 深入解析ASP.NET Core MVC应用的模块化设计[上篇]
ASP.NET Core MVC的"模块化"设计使我们可以构成应用的基本单元Controller定义在任意的模块(程序集)中,并在运行时动态加载和卸载.这种为"飞行中的飞 ...