#B4046. [语言月赛 202410] 寻找质数

[语言月赛 202410] 寻找质数

题目描述

称一个数 xx 是孤独数,当且仅当 xx 是质数且 xx 除以 mm 的余数是 rr。

给出正整数 n,m,r,k n,m,r,k,求 1∼n1\sim n 内第 kk 大的孤独数。若不存在输出 −1-1。

例如,3,5,11,73,5,11,7 这四个数中,从大到小排序时 77 是第 22 名,那么我们说 77 是第二大的。

输入格式

输入一行四个正整数 n,m,r,kn,m,r,k,含义见题目描述。

输出格式

输出一行一个整数表示 1∼n1\sim n 内第 kk 大的孤独数,若不存在则输出 −1-1。

20 3 2 2

11

10000 6 4 1

-1

97 10 7 6

7

提示

【样例 1 解释】

当 m=3,r=2m=3,r=2 时,一个数是孤独数当且仅当其是质数,并且除以 33 的余数为 22。

1∼201\sim 20 的质数有 2,3,5,7,11,13,17,192,3,5,7,11,13,17,19,其中孤独数有 2,5,11,172,5,11,17。

要求 1∼201\sim 20 内第 22 大的孤独数,根据上面列举出的结论,答案是 1111。

【样例 2 解释】

除以 66 余 44 的数一定是偶数,并且不等于 22,所以一定不是质数。因此,此时不存在孤独数,也就不存在第 11 大的孤独数。

【样例 3 解释】

1∼971\sim 97 内的孤独数从大到小排序依次为 97,67,47,37,17,797,67,47,37,17,7,其中第 66 大的孤独数为 77。

【数据范围】

本题共 1010 个测试点,每个 1010 分。

对于测试点 1,21,2,保证 m=nm=n。

对于测试点 1∼51\sim 5,保证 k=1k=1。

对于全部测试点,保证 1≤k≤n≤100001\le k\le n\le 10000,1≤r<m≤n1\le r<m\le n。