Jzoj5636 Power

原创 2018年04月17日 19:59:10

近期没有写过博客感觉要死了->重返jz深造

一道区间查询的问题,因为模数不是质数,我们考虑利用指数循环节这个东西:

x^k=x^(k%phi(M)+phi(M))%M 这里要求k>=phi(M)

那么可以写成Ans[l,r]%M=x^(Ans[l+1,r]%phi(M))%M

由于phi的迭代会在logn次收敛为1,所以我们可以直接递归来做

先用线性筛筛出10^7以内的phi值,大过这个的就分解质因数来计算

注意一个问题,对于一个询问[l,r],有可能answer[l+1,r]并不能达到phi(M),这个时候就不能使用上面的结论

至于如何判断一个区间的答案是否大过模数,可以做一次不带取模的pow和一次带取模的,如果两次答案不同就说明答案大过模数

#pragma GCC optimize("O3")
#pragma G++ optimize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 10000000
#define LL long long
using namespace std;
int n,m,M,s[100010]; bool vis[N+10];
int t=0,w[N>>2],phi[N+10];
inline LL bow(LL x,LL k,LL s=1){
	for(;k;x=x*x,k>>=1) k&1?s=s*x:0;
	return s;
}
inline LL pow(LL x,LL k,LL M,LL s=1){
	for(;k;x=x*x%M,k>>=1) k&1?s=s*x%M:0;
	return s;
}
inline int cphi(int M){
	int T=M;
	for(int i=1;w[i]*w[i]<=M;++i)
		if(M%w[i]==0) for(T=T/w[i]*(w[i]-1);M%w[i]==0;M/=w[i]);
	if(M>1) T=T/M*(M-1);
	return T;
}
inline bool gcd(int l,int r,int M,int& S){
	if(M==1){ S=0; return 1; }
	if(l==r){ S=s[l]%M; return s[l]>=M; }
	int ph=(M<=N?phi[M]:cphi(M));
	if(gcd(l+1,r,ph,S)){
		S=pow(s[l],ph+S,M);
		return s[l]>=1;
	} else {
		int T=bow(s[l],S);
		S=pow(s[l],S,M);
		return S!=T;
	}
}
int main(){
	freopen("power.in","r",stdin);
	freopen("power.out","w",stdout);
	scanf("%d%d",&n,&M);
	for(int i=1;i<=n;++i) scanf("%d",s+i);
	for(int i=2;i<=N;++i){
		if(!vis[i]) phi[w[++t]=i]=i-1;
		for(int j=1;j<=t && i*w[j]<=N;++j){
			vis[i*w[j]]=1;
			if(i%w[j]==0){ phi[i*w[j]]=phi[i]*w[j]; break; }
			phi[i*w[j]]=phi[i]*(w[j]-1);
		}
	}
	scanf("%d",&m);
	for(int l,r;m--;){
		scanf("%d%d",&l,&r);
		gcd(l,r,M,r);
		printf("%d\n",r);
	}
}


版权声明:本文为Cooevjnz原创文章,未经Cooevjnz允许也可以转载! https://blog.csdn.net/JacaJava/article/details/79979685

Power BI快速进阶之旅

该课程是从微软Power BI入门的基础操作开始,从浅至深,递进式学习,逐步提升综合能力并且涵盖了基础、业务、思维、工具、方法等方方面面的知识,快速教会大家快速搭建企业商业智能平台。还有精致案例如临其境,利于提高大家的实战能力。 说明:为了让大家更好的学习理解,我们的课程由四位讲师讲解,每位讲师负责讲解自己所在专业领域知识,这样能够更好的且更具有针对性的对课程内容进行诠释。
  • 2018年03月27日 11:03

jzoj5636 【NOI2018模拟4.7】power (扩展欧拉定理,phi的性质)

Description 给定正整数m&amp;lt;=1e9与n个数,n&amp;lt;=1e5,q个询问,q&amp;lt;=1e5,每次询问某个区间[l,r]的power值: 即alal+1a...
  • jokerwyt
  • jokerwyt
  • 2018-04-12 19:11:13
  • 18

oracle power 函数

oracle power 函数 power(x,y) :计算x^y次方,返回。 1、select power(16,2),power(3,2) from dual; 结果: ...
  • haiross
  • haiross
  • 2013-12-26 14:32:25
  • 14151

Analyzing Data with Power BI and Power Pivot for Excel

  • 2017年04月26日 08:32
  • 21.78MB
  • 下载

浅谈网络世界中的Power Law现象(一) 什么是Power Law

Posted by Mr.Friday 这次系列的主题是网络世界里得Power Law。这个主题其实很不好写,因为这个数学模型在生活中随处可见,而且在不同得场合,不同得环境下,人民往往对这个现象有着...
  • jinruoyanxu
  • jinruoyanxu
  • 2016-06-10 19:55:18
  • 4722

15、Power Query-行列管理实例应用

Power Query-行列管理实例应用 数据源如下图,是学生三门课程的考试成绩,其中有一次通过的,有考过多次的: 要求: 1、找出每个课程考试三次以上的(包含三次); 2、找出三个课...
  • zhongguomao
  • zhongguomao
  • 2017-01-03 21:59:40
  • 4364

31、Power Query-行、列、表的构造

本节重点:Power Query-行、列、表的构造 之前我们讲过了已有数据的构造,这次我们使用空查询来简单讲解一下行(record)、列(list)、表(table)的创建。 一、行(record) ...
  • zhongguomao
  • zhongguomao
  • 2017-01-13 10:11:10
  • 2536

2、Power Map—Power Map安装与使用?

上一节我们了解了Power Map的强大,那么这么炫酷的一款功能我们将如何使用呢? 如何查看我们的Exce是否具备了这个功能? 打开Excel,在插入下面看看有没有“Power Map”的按钮。 ...
  • zhongguomao
  • zhongguomao
  • 2017-02-16 10:30:23
  • 9667

【原创】介绍新技术:电力通讯(PLC:power line communication)[not finished]

     实际上这早已不是什么新技术 ,只不过这项技术在中国的推广很慢。再加上他的稳定性并不怎么样。它的英文名叫做 power line communication(PLC) , 这项技术就是通过供电...
  • leimd
  • leimd
  • 2007-06-09 23:13:00
  • 1586

一元N次方程,转为字符串在oracle用power函数计算

这几天做任务的时候有个需求,从数据库读取出公式,现在要用这个计算公式 Y=0.004x^11 - 0.265*x^6 + 0.382x^2 + 10.46x - 4.772 计算出Y值, 下...
  • qq_33369215
  • qq_33369215
  • 2016-12-28 15:19:07
  • 951
收藏助手
不良信息举报
您举报文章:Jzoj5636 Power
举报原因:
原因补充:

(最多只允许输入30个字)