画一下柿子就知道是求区间乘积乘区间内所有质因数的(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的更多相关文章

  1. 【51Nod 1239】欧拉函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 还是模板题. 杜教筛:\[S(n)=\frac{n(n+1)}{2 ...

  2. 【51nod】1239 欧拉函数之和 杜教筛

    [题意]给定n,求Σφ(i),n<=10^10. [算法]杜教筛 [题解] 定义$s(n)=\sum_{i=1}^{n}\varphi(i)$ 杜教筛$\sum_{i=1}^{n}(\varph ...

  3. 【51nod】1239 欧拉函数之和

    题解 写完上一道就开始写这个,大体上就是代码改了改而已= = 好吧,再推一下式子! \(\sum_{i = 1}^{n}i = \sum_{i = 1}^{n}\sum_{d | i}\phi(d) ...

  4. 51nod 1239 欧拉函数之和(杜教筛)

    [题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 [题目大意] 计算欧拉函数的前缀和 [题解] 我们 ...

  5. 51nod 1040 最大公约数之和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   给出一个n,求1-n这n个数,同n的最大公约数的和.比如: ...

  6. Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树

    https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...

  7. [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== ...

  8. 51nod 1040最大公约数和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 给出一个n,求1-n这n个数,同n的最大公约数 ...

  9. 51Nod 1136 欧拉函数 Label:数论

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

随机推荐

  1. HDU_1143_tri tiling

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. python3 操作excel表

    python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库可从这里下载https://pypi.python.org/pypi.下面分别记录py ...

  3. CodeFrist基础_迁移更新数据

    一丶自动迁移 第一次启用迁移:NeGet-->Enable-Migrations public DemoDbContext() : base("name=ConncodeFirst&q ...

  4. LOJ #6009 「网络流 24 题」软件补丁

    题面 某公司发现其研制的一个软件中有 $ n $ 个错误,随即为该软件发放了一批共 $ m $ 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误 ...

  5. MySQL-date和datetime

    MySQL中 date表示只有日期: insert into stu values(id = null, birthday = '2000-01-11'); datetime则还包含了时间: inse ...

  6. Go:闭包

    闭包就是一个函数和与其相关的引用环境组合的一个整体(实体). package main import "fmt" func add() func(int) int { i := 0 ...

  7. python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害!

    是时候给你说说 爬虫框架了 使用框架来爬取数据 会节省我们更多时间 很快就能抓取到我们想要抓取的内容 框架集合了许多操作 比如请求,数据解析,存储等等 都可以由框架完成 有些小伙伴就要问了 你他妈的 ...

  8. Java Web学习总结(31)——全站HTTPS化SSL免费证书使用

    1 背景 谷歌从 2017 年起,Chrome 浏览器将也会把采用 HTTP 协议的网站标记为「不安全」网站:苹果从 2017 年 iOS App 将强制使用 HTTPS:在国内热火朝天的小程序也要求 ...

  9. UVA 12697 Minimal Subarray Length

    Minimal Subarray Length Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA ...

  10. noip模拟赛 蒜头君打地鼠

    分析:直接一个一个地去暴力枚举分数比较少,我们需要一种比较快的统计一定空间内1的数量,标准做法是前缀和,但是二维前缀和维护的是一个矩形内的值,这个是旋转过的该怎么办?可以把图旋转45°,不过这样比较考 ...