【UOJ#38】【清华集训2014】奇数国
考虑欧拉函数的性质,60很小,压位存下线段树每个节点出现质数。
#include<bits/stdc++.h>
const int N=;
const int yql=;
typedef long long ll;
using namespace std;
int prime[],n,m,vis[];
ll val,p,rev[];
struct Segment_Tree{
#define lson (o<<1)
#define rson (o<<1|1)
ll sumv[N<<],pri[N<<];
inline void pushup(int o){
sumv[o]=(sumv[lson]*sumv[rson])%yql;
pri[o]=pri[lson]|pri[rson];
}
inline void build(int o,int l,int r){
if(l==r){sumv[o]=;pri[o]=;return;}
int mid=(l+r)>>;
build(lson,l,mid);build(rson,mid+,r);
pushup(o);
}
inline void change(int o,int l,int r,int q,int v){
if(l==r){
sumv[o]=v;pri[o]=;
for(int i=;i<;i++)if(v%prime[i]==)pri[o]|=1LL<<i;
return;
}
int mid=(l+r)>>;
if(q<=mid)change(lson,l,mid,q,v);
else change(rson,mid+,r,q,v);
pushup(o);
}
inline void query(int o,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr){val=val*sumv[o]%yql;p|=pri[o];return;}
int mid=(l+r)>>;
if(ql<=mid)query(lson,l,mid,ql,qr);
if(qr>mid)query(rson,mid+,r,ql,qr);
}
}T;
inline ll fpow(ll x,ll p){
ll ans=;
for(;p;p>>=,x=x*x%yql)if(p&)ans=ans*x%yql;
return ans;
}
inline ll read(){
ll f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
int cnt=;
for(int i=;cnt<;i++)if(!vis[i]){prime[cnt++]=i;for(int j=i;j<=;j+=i)vis[j]=;}
for(int i=;i<;i++)rev[i]=fpow(prime[i],yql-)*1LL*(prime[i]-)%yql;
T.build(,,N);int m=read();n=N;
while(m--){
int opt=read(),l=read(),r=read();
if(opt==)T.change(,,n,l,r);
else{
val=;p=;T.query(,,n,l,r);
for(int j=;j<;j++,p>>=)if(p&)val=1LL*val*rev[j]%yql;
printf("%lld\n",val);
}
}
}
【UOJ#38】【清华集训2014】奇数国的更多相关文章
- uoj #46[清华集训2014]玄学
uoj 因为询问是关于一段连续区间内的操作的,所以对操作构建线段树,这里每个点维护若干个不交的区间,每个区间\((l,r,a,b)\)表示区间\([l,r]\)内的数要变成\(ax+b\) 每次把新操 ...
- UOJ.41.[清华集训2014]矩阵变换(稳定婚姻)
题目链接 稳定婚姻问题:有n个男生n个女生,每个男/女生对每个女/男生有一个不同的喜爱程度.给每个人选择配偶. 若不存在 x,y未匹配,且x喜欢y胜过喜欢x当前的配偶,y喜欢x也胜过y当前的配偶 的完 ...
- bzoj 3816&&uoj #41. [清华集训2014]矩阵变换
稳定婚姻问题: 有n个男生,n个女生,所有女生在每个男生眼里有个排名,反之一样. 将男生和女生两两配对,保证不会出现婚姻不稳定的问题. 即A-1,B-2 而A更喜欢2,2更喜欢A. 算法流程: 每次男 ...
- 【数论&线段树】【P4140】[清华集训2015]奇数国
Description 有一个长为 \(n\) 的序列,保证序列元素不超过 \(10^6\) 且其质因数集是前60个质数集合的子集.初始时全部都是 \(3\),有 \(m\) 次操作,要么要求支持单点 ...
- AC日记——【清华集训2014】奇数国 uoj 38
#38. [清华集训2014]奇数国 思路: 题目中的number与product不想冲: 即为number与product互素: 所以,求phi(product)即可: 除一个数等同于在模的意义下乘 ...
- uoj 41 【清华集训2014】矩阵变换 婚姻稳定问题
[清华集训2014]矩阵变换 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/41 Description 给出 ...
- [UOJ#274][清华集训2016]温暖会指引我们前行
[UOJ#274][清华集训2016]温暖会指引我们前行 试题描述 寒冬又一次肆虐了北国大地 无情的北风穿透了人们御寒的衣物 可怜虫们在冬夜中发出无助的哀嚎 “冻死宝宝了!” 这时 远处的天边出现了一 ...
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- 清华集训2014 sum
清华集训2014sum 求\[∑_{i=1}^{n}(-1)^{⌊i√r⌋}\] 多组询问,\(n\leq 10^9,t\leq 10^4, r\leq 10^4\). 吼题解啊 具体已经讲得很详细了 ...
- uoj#38. 【清华集训2014】奇数国【欧拉函数】
number⋅x+product⋅y=1 有整数x,y解的条件是gcd(number, product) == 1. product用线段树维护一下,然后现学了个欧拉函数. 可以这样假如x = p ...
随机推荐
- 【bzoj4542】[Hnoi2016]大数 莫队算法
题目描述 给出一个数字串,多次询问一段区间有多少个子区间对应的数为P的倍数.其中P为质数. 输入 第一行一个整数:P.第二行一个串:S.第三行一个整数:M.接下来M行,每行两个整数 fr,to,表示对 ...
- robot framework Selenium2关键字介绍
*** Settings *** Library Selenium2Library *** Keywords *** Checkbox应该不被选择 [Arguments] ${locator} Che ...
- BZOJ3594 SCOI2014方伯伯的玉米田(动态规划+树状数组)
可以发现每次都对后缀+1是不会劣的.考虑dp:设f[i][j]为前i个数一共+1了j次时包含第i个数的LIS长度.则f[i][j]=max(f[i][j-1],f[k][l]+1) (k<i,l ...
- VC 生成后事件 Post-Build Event
原文链接地址:https://blog.csdn.net/jfkidear/article/details/27313643.https://blog.csdn.net/kevindr/article ...
- Linux内核分析第二周--操作系统是如何工作的
Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- 【linux】/dev/null与/dev/zero详解
引用别人的资源,收藏: http://www.cnblogs.com/xianghang123/archive/2012/03/23/2413381.html
- 专题训练之LCA
推荐几个博客:https://www.cnblogs.com/JVxie/p/4854719.html Tarjan离线算法的基本思路及其算法实现 https://blog.csdn.net/shah ...
- Git 自动补全
如果你用的是 Bash shell,可以试试看 Git 提供的自动补全脚本. http://git-scm.com/download 下载 Git 的源代码,进入contrib/completion ...
- JS中如何使用EL表达式中的对象
JS中如何使用EL表达式中的对象 2017年09月25日 15:33:09 lhpnba 阅读数:4859 1.js中使用el表达式要加双引号或单引号:'${list}' 2.js变量获取el表达 ...
- 洛谷P2563 [AHOI2001]质数和分解
题目描述 任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如,9 的质数和表达式就有 ...