#38. 【清华集训2014】奇数国|线段树|欧拉函数
来源:互联网 发布:背身护球 知乎 编辑:程序博客网 时间:2024/06/06 19:09
最后一个点一直T。。。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define LL long longconst int MAXN=100010;const int MO=19961993;const int N=100000;struct H{LL cnt;int x;}seg[MAXN*4],ans;int n,prime[61]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281};void Ins(int now,int l,int r,int loc,int x){if(l==r){seg[now].x=x;seg[now].cnt=0;for(int i=1;i<=60;i++){seg[now].cnt<<=1;if(x%prime[i]==0){seg[now].cnt|=1;while(x%prime[i]==0) x/=prime[i];}}return ;}int mid=(l+r)/2;if(loc<=mid) Ins(now*2,l,mid,loc,x);else Ins(now*2+1,mid+1,r,loc,x);seg[now].cnt=seg[now*2].cnt|seg[now*2+1].cnt;seg[now].x=(LL)seg[now*2].x*seg[now*2+1].x%MO;}void Q(int now,int l,int r,int s,int t){if(s<=l && r<=t){ans.x=(LL)ans.x*seg[now].x%MO;ans.cnt|=seg[now].cnt;return ;}int mid=(l+r)/2;if(s<=mid) Q(now*2,l,mid,s,t);if(mid+1<=t) Q(now*2+1,mid+1,r,s,t);}int F(int x,int p){if(p==0) return 1;int t=F(x,p/2);t=(LL)t*t%MO;if(p&1) t=(LL)t*x%MO;return t;}void Build(int now,int l,int r){if(l==r){seg[now].cnt=288230376151711744ll;seg[now].x=3;return ;}int mid=(l+r)/2;Build(now*2,l,mid);Build(now*2+1,mid+1,r);seg[now].cnt=seg[now*2].cnt|seg[now*2+1].cnt;seg[now].x=(LL)seg[now*2].x*seg[now*2+1].x%MO;}int main(){Build(1,1,N);cin >>n;int x,y,opt;for(int i=1;i<=n;i++){scanf("%d %d %d",&opt,&x,&y);if(opt==0){ans.x=1;Q(1,1,N,x,y);for(int i=60;i>=1;i--){if(ans.cnt&1)ans.x=(LL)ans.x*F(prime[i],MO-2)%MO*(prime[i]-1)%MO;ans.cnt>>=1;}printf("%d\n",ans.x);}elseIns(1,1,N,x,y);}return 0;}
0 0
- #38. 【清华集训2014】奇数国|线段树|欧拉函数
- 【XSY1284】【BZOJ3813】【清华集训2014】奇数国 线段树 数学
- 欧拉函数+线段树 奇数国
- [BZOJ3813][清华集训2014]奇数国(数论+bit)
- BZOJ 3813 奇数国 欧拉函数+线段树+乘法逆元
- 3813: 奇数国 线段树+线性筛素数+欧拉函数+乘法逆元+压位
- UOJ #164. 【清华集训2015】V 线段树
- [BZOJ3585][清华集训2014]mex 主席树
- 【清华集训2014】mex
- 【清华集训2014】mex
- 【清华集训2014】mex
- 【清华集训2014】mex
- 【清华集训2014】mex
- 3813: 奇数国|树状数组|欧拉函数
- HDU 5152 线段树+欧拉函数
- 线段树,区间更新+欧拉函数
- 【清华集训2014】【BZOJ3817】Sum
- 【清华集训2014】【BZOJ3811】玛里苟斯
- 【Good Bye 2014C】【脑洞】New Year Book Reading 书放一摞依次看 最佳顺序使费用最小
- PTA基础编程 5-15 计算圆周率 (15分)
- Java排序算法(一)--快速排序(QuickSort)
- 【Good Bye 2014D】【期望的线性可加 基本元素累计】New Year Santa Network 树上取3点,路径权值之和的期望
- sql的case语句
- #38. 【清华集训2014】奇数国|线段树|欧拉函数
- error at ::0 can't find referenced pointcut解决办法
- 【Good Bye 2014E】【贪心 单调栈+线段树】New Year Domino 至少增加多高长度的多米诺骨牌才可推x倒y
- ABAP改表狂魔程序
- 浅谈php构造方法与构析方法
- 关于批量插入数据之我见(100万级别的数据,mysql)
- Oracle 11g服务器监听配置
- Redis架设好了,.net接口也到位,怎么用,先看看Redis应用场景
- Codeforces Round #345 (Div. 2) B. Beautiful Paintings