CF1106F.Lunar New Year and a Recursive Sequence
提高+/省选-
通过率:0%
时间限制:3.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Lunar New Year is approaching, and Bob received a gift from his friend recently — a recursive sequence! He loves this sequence very much and wants to play with it.
Let f1,f2,…,fi,… be an infinite sequence of positive integers. Bob knows that for i>k, fi can be obtained by the following recursive equation:
f_i=left(f_i−1b_1cdotf_i−2b_2cdotcdotscdotf_i−kb_kright)bmodp,
which in short is
f_i=left(prod_j=1kf_i−jb_jright)bmodp,
where p=998244353 (a widely-used prime), b1,b2,…,bk are known integer constants, and xmody denotes the remainder of x divided by y.
Bob lost the values of f1,f2,…,fk, which is extremely troublesome – these are the basis of the sequence! Luckily, Bob remembers the first k−1 elements of the sequence: f1=f2=…=fk−1=1 and the n-th element: fn=m. Please find any possible value of fk. If no solution exists, just tell Bob that it is impossible to recover his favorite sequence, regardless of Bob's sadness.
农历新年即将来临,Bob最近收到了朋友送的一份礼物——一个递归序列!他非常喜爱这个序列,想要好好玩一玩。
设 f1,f2,…,fi,… 是一个无限的正整数序列。Bob 知道:当 i>k 时,fi 可由如下递推公式得到:
f_i=left(f_i−1b_1cdotf_i−2b_2cdotcdotscdotf_i−kb_kright)bmodp,
简写为:
f_i=left(prod_j=1kf_i−jb_jright)bmodp,
其中 p=998244353(一个被广泛使用的素数),b1,b2,…,bk 是已知的整数常数,且 xmody 表示 x 除以 y 的余数。
Bob 不慎遗失了序列的前 k 项 f1,f2,…,fk,这极为棘手——它们可是整个序列的基础!幸运的是,Bob 还记得序列的前 k−1 项:f1=f2=…=fk−1=1,以及第 n 项:fn=m。请找出任意一个可能的 fk 值。若不存在解,则只需告诉 Bob:无论他多么伤心,都无法恢复他最钟爱的这个序列。
输入格式
The first line contains a positive integer k (1≤k≤100), denoting the length of the sequence b1,b2,…,bk.
The second line contains k positive integers b1,b2,…,bk (1≤bi<p).
The third line contains two positive integers n and m (k<n≤109, 1≤m<p), which implies fn=m.
第一行包含一个正整数 k(1≤k≤100),表示序列 b1,b2,…,bk 的长度。
第二行包含 k 个正整数 b1,b2,…,bk(1≤bi<p)。
第三行包含两个正整数 n 和 m(k<n≤109,1≤m<p),表示 fn=m。
输出格式
Output a possible value of fk, where fk is a positive integer satisfying 1≤fk<p. If there are multiple answers, print any of them. If no such fk makes fn=m, output −1 instead.
It is easy to show that if there are some possible values of fk, there must be at least one satisfying 1≤fk<p.
输出 fk 的一个可能取值,其中 fk 是满足 1≤fk<p 的正整数。若存在多个答案,输出任意一个即可。若不存在这样的 fk 使得 fn=m,则输出 −1。
容易证明:若存在满足条件的 fk,则其中必至少有一个满足 1≤fk<p。
输入输出样例
输入#1
3 2 3 5 4 16
输出#1
4
输入#2
5 4 7 1 5 6 7 14187219
输出#2
6
输入#3
8 2 3 5 6 1 7 9 10 23333 1
输出#3
1
输入#4
1 2 88888 66666
输出#4
-1
输入#5
3 998244352 998244352 998244352 4 2
输出#5
-1
输入#6
10 283 463 213 777 346 201 463 283 102 999 2333333 6263423
输出#6
382480067
说明/提示
In the first sample, we have f4=f32⋅f23⋅f15. Therefore, applying f3=4, we have f4=16. Note that there can be multiple answers.
In the third sample, applying f7=1 makes f23333=1.
In the fourth sample, no such f1 makes f88888=66666. Therefore, we output −1 instead.
在第一个样例中,我们有 f4=f32⋅f23⋅f15。因此,代入 f3=4,可得 f4=16。注意,可能存在多个答案。
在第三个样例中,令 f7=1 可使得 f23333=1。
在第四个样例中,不存在满足 f88888=66666 的 f1。因此,我们输出 −1。
输入解题思路,AI测评打分。不知道怎么写?