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

[语言月赛 202410] 寻找质数

题目描述

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

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

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

输入格式

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

输出格式

输出一行一个整数表示 1n1\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

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

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

【样例 2 解释】

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

【样例 3 解释】

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

【数据范围】

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

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

对于测试点 151\sim 5,保证 k=1k=1

对于全部测试点,保证 1kn100001\le k\le n\le 100001r<mn1\le r<m\le n