[EER1]礼物

题目背景

Update:
时限扩大到 3 秒。

题目描述

小 Z 送了你一个数列,具体的,有 a 1 = 1 a_1=1 a1=1 a 2 = 2 a_2=2 a2=2 a i = 2 a i − 1 + k a i − 2 ( 3 ≤ i ≤ n ) a_i=2a_{i-1}+ka_{i-2}(3\le i\le n) ai=2ai1+kai2(3in),其中 n 是数列的长度,k 是她设定的一个正整数参数。

小 Z 告诉你一个秘密,这个数列是她精心挑选的,有着一种奇妙的性质 “Prime-smooth”—— 即对于 n 以内的任何一个质数 p,满足 p ∣ a p p\mid a_p pap ∣ \mid 是整除记号)。

你很好奇是不是真的有这回事,于是你写了一个质数发生器,进行了长达三天三夜的尝试,终于发现了几个反例:有 m 个质数 p i p_i pi竟然不满足小 Z 所说的性质!

由于你已经随机了很久,你相信别的质数 一定满足 性质。

为了表明你和小 Z 心有灵犀,你现在想猜出小 Z 当时设定的参数 k,由于答案很大,你只需要求出最小的 k 对一个质数 c 取模即可。

输入格式

第一行三个非负整数 n , m , c n,m,c n,m,c,它们与题面中含义相同。

接下来 m 行,每行一个正整数 i,表示对于从小到大数第 i 个质数 p i p_i pi,不满足 p i ∣ a p i p_i\mid a_{p_i} piapi 。我们保证这个质数 p i ≤ n p_i\le n pin。注意:不保证这 m 个数两两不同。

输出格式

一行一个整数,为最小的 k 对 c 取模后的值。

特别的,如果出现无解的情况,输出 −1。

输入输出样例
输入 #1 复制

10 1 998244353
3

输出 #1 复制

20

输入 #2 复制

40 2 1018429441
1
4

输出 #2 复制

-1

说明/提示

【数据范围】

10 ≤ n ≤ 3 × 1 0 8 10\le n\le 3\times 10^8 10n3×108

n < c < 2 30 n\lt c\lt 2^{30} n<c<230 c = a ⋅ 2 k + 1 ( k ≥ 18 ) c=a\cdot 2^k+1(k\ge 18) c=a2k+1(k18),保证 c 是质数。

0 ≤ m ≤ 20 0\le m\le 20 0m20

题解

直接求出通项:

先设出生成函数 A ( x ) = 2 x A ( x ) + k x 2 A ( x ) + 2 x + 1 A(x)=2xA(x)+kx^2A(x)+2x+1 A(x)=2xA(x)+kx2A(x)+2x+1

解方程 A ( x ) = 2 x + 1 1 − 2 x − k x 2 A(x)=\frac{2x+1}{1-2x-kx^2} A(x)=12xkx22x+1

因式分解 A ( x ) = 2 x + 1 ( 1 − ( 1 + k + 1 ) x ) ( 1 − ( 1 − k + 1 ) x ) A(x)=\frac{2x+1}{(1-(1+\sqrt{k+1})x)(1-(1-\sqrt{k+1})x)} A(x)=(1(1+k+1 )x)(1(1k+1 )x)2x+1

然后可以把通项公式写成 a n = x ( 1 + k + 1 ) n + y ( 1 − k + 1 ) n a_n=x(1+\sqrt{k+1})^n+y(1-\sqrt{k+1})^n an=x(1+k+1 )n+y(1k+1 )n的形式,然后待定系数一下就可以求出x和y了。

最后的通项公式是这个样子的 a n = ( 1 + k + 1 ) n − ( 1 − k + 1 ) n 2 k + 1 a_n=\frac{(1+\sqrt{k+1})^n-(1-\sqrt{k+1})^n}{2\sqrt{k+1}} an=2k+1 (1+k+1 )n(1k+1 )n
然后用二项式定理展开:
a p = ∑ i = 0 p − 1 2 ( 2 i + 1        p ) ( k + 1 ) i a_p=\sum_{i=0}^{\frac{p-1}{2}}\Big(^{\ \ \ \;p}_{2i+1}\Big)(k+1)^i ap=i=02p1(2i+1   p)(k+1)i
这个东西模了p之后,就成这个样子了:
a p ≡ ( k + 1 ) p − 1 2 ( m o d p ) a_p\equiv(k+1)^{\frac{p-1}{2}} \pmod p ap(k+1)2p1(modp)
也就是说要满足条件,当且仅当 k ≡ − 1 ( m o d p ) k\equiv-1\pmod p k1(modp)

根据中国剩余定理,k的最小值为:
p 1 p 2 p 3 . . . p m − 1 p_1p_2p_3...p_m-1 p1p2p3...pm1(除去那几个不满足的的质数)

这个东西可以用筛法硬算,但是数据太大,可以把2和3的倍数手动筛掉,然后再埃氏筛(这题卡常啊。。。)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值