2996 - 小S的倍数查找问题

小S特别喜欢数论,最近正在研究埃氏筛法。他发现在这个筛法的过程中,需要去枚举质数的倍数。根据唯一分解定理,任何合数都可以表示为若干质数的乘积形式,于是可以筛掉所有的合数,找出质数。
在这个过程中,他想要解决的一个子问题,就是如何找到第一个大于等于L且小于等于Rp的倍数。这个问题并不复杂,小S一会就想到了枚举的方法,但是他在想一个更难的问题。
如何找到在[L,R]范围内(包括端点)p的第k小的倍数?当然如果不存在这个数字,你应该告诉小S结果为-1
例如:p=2[10,20]的范围内 10,12,14,16,18,20都是p的倍数,第5小的倍数为18

输入

每个问题包括T组数据,每组数据包含四个正整数 LR, p, k, 每个数字的含义由题目描述中所知。

输出

输出一个正整数,表示在[L,R]范围内(包括端点),p的第k小的倍数。
若不存在,则输出一行“-1”(不包含双引号)。

样例

输入

3
10 20 2 5
1 100 3 10
80 82 3 2

输出

18
30
-1

提示

30%的数据保证,所有出现的数字,在1000范围内。
另外20%的数据保证,k=1
100%的数据范围保证,T \leq 10^5 , 1 \leq L \leq 10^9 , 1 \leq R \leq 10^9 , 1 \leq p \leq 10^9 , 1 \leq k \leq 10^9

来源

奇遇编程
2024年青岛市城阳区“区长杯”初中组第一题

题目参数

时间限制 1 秒
内存限制 32 MB
提交次数 0
通过人数 0
统计

上一题 下一题