51nod 1642 区间欧拉函数 && codeforce594D REQ
画一下柿子就知道是求区间乘积乘区间内所有质因数的(p-1)/p(就是求欧拉的公式嘛)
看上去莫队就很靠谱然而时间O(nsqrt(n)logn)并不资瓷
还是离线,确定右端点,对于1~i的区间内的质因数我们在树状数组把他们插入到最后一次出现的位置,然后扫一次求逆元+找质因数O(nlog^2n)
注意算质因子的时候不能用试除法啊
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=1e9+;
int quick_pow(int A,int p)
{
int ret=;
while(p!=)
{
if(p%==)ret=(LL)ret*A%mod;
A=(LL)A*A%mod;p/=;
}
return ret;
}
int inv(int A){return quick_pow(A,mod-);} int pr,prime[],pm[];
bool v[];
void get_prime()
{
pr=;
for(int i=;i<=;i++)
{
if(v[i]==false)prime[++pr]=i,pm[i]=i;
for(int j=;j<=pr&&i*prime[j]<=;j++)
{
v[i*prime[j]]=true;
pm[i*prime[j]]=min(pm[i],prime[j]);
if(i%prime[j]==)break;
}
}
} int n;LL s[];
int lowbit(int x){return x&-x;}
void change(int x,LL k)
{
while(x<=n)
{
s[x]=s[x]*k%mod;
x+=lowbit(x);
}
}
LL getsum(int x)
{
LL ret=;
while(x>)
{
ret=ret*s[x]%mod;
x-=lowbit(x);
}
return ret;
} int a[];LL sm[];
struct query{int l,r,id;}q[];int as[];
bool cmp(query q1,query q2){return q1.r<q2.r;}
int last[];
int main()
{
get_prime();
scanf("%d",&n);
sm[]=;
for(int i=;i<=n;i++)
scanf("%d",&a[i]), sm[i]=sm[i-]*a[i]%mod;
int Q;
scanf("%d",&Q);
for(int i=;i<=Q;i++)
scanf("%d%d",&q[i].l,&q[i].r), q[i].id=i;
sort(q+,q+Q+,cmp); int j=;
memset(last,,sizeof(last));
for(int i=;i<=n;i++)s[i]=;
for(int i=;i<=n;i++)
{
int d=a[i];
while(d>)
{
int p=pm[d];LL c=(LL)(p-)*inv(p)%mod;
if(last[p]>)change(last[p],inv(c));
last[p]=i;
change(last[p],c);
while(d%p==)d/=p;
} while(j<=Q&&q[j].r==i)
{
as[q[j].id]=sm[q[j].r]*inv(sm[q[j].l-])%mod*getsum(q[j].r)%mod*inv(getsum(q[j].l-))%mod;
j++;
}
} for(int i=;i<=Q;i++)printf("%d\n",as[i]);
return ;
}
51nod 1642 区间欧拉函数 && codeforce594D REQ的更多相关文章
- 【51Nod 1239】欧拉函数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 还是模板题. 杜教筛:\[S(n)=\frac{n(n+1)}{2 ...
- 【51nod】1239 欧拉函数之和 杜教筛
[题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...
- 【51nod】1239 欧拉函数之和
题解 写完上一道就开始写这个,大体上就是代码改了改而已= = 好吧,再推一下式子! \(\sum_{i = 1}^{n}i = \sum_{i = 1}^{n}\sum_{d | i}\phi(d) ...
- 51nod 1239 欧拉函数之和(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 [题目大意] 计算欧拉函数的前缀和 [题解] 我们 ...
- 51nod 1040 最大公约数之和(欧拉函数)
1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出一个n,求1-n这n个数,同n的最大公约数的和.比如: ...
- Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树
https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...
- [51Nod 1244] - 莫比乌斯函数之和 & [51Nod 1239] - 欧拉函数之和 (杜教筛板题)
[51Nod 1244] - 莫比乌斯函数之和 求∑i=1Nμ(i)\sum_{i=1}^Nμ(i)∑i=1Nμ(i) 开推 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n== ...
- 51nod 1040最大公约数和(欧拉函数)
1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 给出一个n,求1-n这n个数,同n的最大公约数 ...
- 51Nod 1136 欧拉函数 Label:数论
对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...
随机推荐
- 关于Apache mod_rewrite的中文配置、使用和语法介绍(实现URL重写和防盗链功能)
以数据库后台驱动的动态内容的网站,经常会遇到这些的问题: 当在浏览器的地址栏输入一个无效的参数时,会出现数据库的错误提示,这是一个安全的隐患 搜索引擎无法收录你的所有网页 网页的链接地址是一系列的参数 ...
- 梦想CAD控件文字COM接口知识点
一.参数绘制文字 在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOU ...
- 运行容器出现docker: Error response from daemon: driver failed programming external connectivity on endpoint elegant_ptolemy (7fe85ca6bd744449ff82b81c1577d73b6821c4e51780c8238fad6aa0cb940522): (iptables fai
运行容器时出现以下报错: docker: Error response from daemon: driver failed programming external connectivity on ...
- 【maven】Description Resource Path Location Type An error occurred while filtering resources TESTVIDEO line
在maven中构建项目的时候发现了如下错误: Description Resource Path Location Type An error occurred while filtering res ...
- 对vuex的一点理解
vuex是vue.js的一个状态管理工具,它适用于解决平行组件之间的数据共享问题.一般情况下,我们更多的是父子组件之间通过props或$emit来实现传值,如何不满足以上情况那只有使用vuex进行解决 ...
- Luogu P1692 部落卫队
解题思路 数据范围不是很大,那应该不是那些普遍的图论的算法.考虑搜索,用暴力解决.从1到N枚举每一个点的位置,搜索这个点事选还是不选.如果在这个点之前选到的点中又和他冲突的点,那就不选,要么就选. 附 ...
- CCF201709-1 打酱油 java(100分)
试题编号: 201709-1 试题名称: 打酱油 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明带着N元钱去买酱油.酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每 ...
- 线程 synchronized锁机制
脏读 一个常见的概念.在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过 ...
- type="application/javascript"
type="application/javascript" html script 标签中 type有如下这些值,请问分别是什么意思,在什么情况下使用? type="te ...
- 【Codeforces 364A】Matrix
[链接] 我是链接,点我呀:) [题意] 让你求出b[i][j]=s[i]*s[j]规则构成的矩阵 的所有子矩阵中子矩阵的和为a的子矩阵的个数 [题解] (x,y,z,t) 会发现它的和就是sum(x ...