指数循环节题集

  • Post author:
  • Post category:其他


指数循环节题集

有个公式

x >= Phi(C), A^x = A ^ (x%Phi(C) + Phi(C)) (mod C)

不会证

1.hdu 3221 Brute-force Algorithm

题目链接


点击打开链接

题意:

Function Find(int n,function func)

If n=1



For i=1 to a do func()

Elseif n=2



For i=1 to b do func()

Else Find(n-1,Find(n-2,func))

Function Main

Find(n,funny)

给出n,a,b,p,问funny会执行多少次,结果模p。

限制:1 <= n <= 1e9,1 <= p <= 1e6,0 <= a,b < 1e6

思路:找规律,指数循环节

令f(n)为funny执行多少次

会发现 f(n)=f(n-1)*f(n-2)

然后:

f(1)=(a^1)*(b^0)

f(2)=(a^0)*(b^1)

然后:

会发现a和b的指数成斐波那契数一样增长,可以用矩阵快速幂解决指数问题

但指数太大,所以要用到指数循环节

公式x >= Phi(C), A^x = A ^ (x%Phi(C) + Phi(C)) (mod C)

2.hdu 5152  A Strange Problem

题目链接


点击打开链接

题意:给你一个长度为N的序列,序列为A1,A2,A3,…AN,然后有M个操作,每个操作为以下三种操作的其中一个:

1. 输出操作。给你l,r,输出∑i=(l,r) Ai的值。

2. 修改操作。给你x,把Ax修改为2Ax

3. 加法操作。给你l,r,x,给Ai(l≤i≤r)加上x

由于输出操作的结果可能很大,输出结果对2333333取模。

限制:0 <= n,m <= 50000


0 <= ai <= 1e9

思路:首先是,这道题主要考操作2,公式x >= Phi(C), A^x = A ^ (x%Phi(C) + Phi(C)) (mod C)

然后,值得注意是,这道题的Phi(c),是一层套一层的。

最后,题目给出2333333,所以Phi(c),最多只有18层。

题解链接


点击打开链接



版权声明:本文为whai362原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。