3813: 奇数国|树状数组|欧拉函数
来源:互联网 发布:java报表开发工具 编辑:程序博客网 时间:2024/06/06 09:21
题目显然让求
可以用线段树维护一下乘积然后求逆元再求欧拉函数,用压位的方法可以缩小60倍的常数。考虑一下树状数组的做法,因为只有
#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<queue>#include<set>#include<map>#define ll long long#define mod 19961993#define N 100001using namespace std;int sc(){ int i=0,f=1; char c=getchar(); while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar(); return i*f;}int prime[66],inv[66],b[300],top;int tr[61][N],n,Q,a[N],flag;ll cal(ll x,ll y){ ll ans=1; for(;y;x=x*x%mod,y>>=1) if(y&1)ans=ans*x%mod; return ans;}void change(int x,int y,ll v){ for(;y<N;y+=y&-y)tr[x][y]+=v;}ll ask(int x,int y){ ll ans=0; for(;y;y-=y&-y)ans+=tr[x][y]; return ans;}void solve(int p,ll x,int i,int f){ ll now=0; while(x%prime[i]==0)x/=prime[i],now++; change(i,p,f*now);}int main(){ for(int i=2;i<=281;i++) if(!b[i]) { prime[++top]=i;inv[top]=cal(prime[top],mod-2); for(int j=2*i;j<=281;j+=i)b[j]=1; } for(int i=1;i<N;i++)change(2,i,1),a[i]=3; Q=sc(); while(Q--) { if(sc()) { int x=sc(),y=sc(); for(int i=1;i<=60;i++) { if(a[x]%prime[i]==0) solve(x,a[x],i,-1); if(y%prime[i]==0) solve(x,y,i,1); } a[x]=y; } else { int l=sc(),r=sc(); ll ans=1; for(int i=1;i<=60;i++) { ll res=ask(i,r)-ask(i,l-1); if(res) ans=ans*cal(prime[i],res-1)*(prime[i]-1)%mod; } printf("%d\n",ans); } } return 0;}
0 0
- 3813: 奇数国|树状数组|欧拉函数
- 欧拉函数+线段树 奇数国
- CodeForces 594D REQ(树状数组+欧拉函数)
- 【BZOJ】【P3813】【奇数国】【题解】【树状数组】
- BZOJ 3813 奇数国 欧拉函数+线段树+乘法逆元
- 3813: 奇数国 线段树+线性筛素数+欧拉函数+乘法逆元+压位
- #38. 【清华集训2014】奇数国|线段树|欧拉函数
- 树状数组 lowbit函数
- HDU 4358 Boring counting(树状数组离线操作+欧拉序列)
- 树状数组的基本函数
- 通过函数使数组中的奇数在偶数的前面
- 欧拉函数
- 欧拉函数
- Relatives 【欧拉函数】
- 欧拉函数
- POJ_2407_欧拉函数
- 欧拉函数
- hdu_3501_欧拉函数
- 使用jsp的forward指令进行页面跳转时注意session对象的清除
- 走在Android的路上其一
- Hibernate一对多关系映射及各种操作
- poj 2528 离散化+线段树
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing 暴力
- 3813: 奇数国|树状数组|欧拉函数
- caffe入门学习:caffe.Classifier的使用
- Ext小技巧:Ext.encode和Ext.urlEncode的使用场景
- 【类型转换】list集合之再认识
- 动态设置UITableView的cell高度(old)
- TCP:状态控制码
- SVD:奇异值分解
- filter过滤器 的初步使用,以及他的基本应用
- 关于 Java 中 正则表达式的 MULTILINE 标志