把总时长 n 拆成 x 个素数 2 与 y 个奇素数段。题目要求 y 是 m 的正整数倍(y≥m)。
要使段数最多,应尽量用小素数:奇素数全取 3,其余全用 2。于是 n=2x+3y,总个数
k=x+y=2n−y冷链调度中心要把总时长恰好为 n 分钟的保温任务切成若干段。每一段的时长必须是一个素数,同一素数可以重复使用。设一共切出 k 段,其中时长为奇素数(除 2 以外的素数)的段数必须是 m 的正整数倍,且不能为 0。规程希望段数 k 尽可能大,以便更密地插入测温节点;若不存在任何合法切分,则判定无法排程。请输出最大的 k;无解时输出 -1。
素数指大于 1 且只有 1 与自身两个正因子的整数;奇素数指除 2 以外的素数。
约束:测试组数不超过 10000;每组满足 2≤n≤1000000000000000000、1≤m≤1000000000000000000。
第一行一个整数 t,表示测试组数。 接下来 t 行,每行两个整数 n 和 m,表示总时长与倍数约束。 保证 1≤t≤10000,2≤n≤1000000000000000000,1≤m≤1000000000000000000。
对每组数据输出一行一个整数:最大段数;无解则输出 -1。
输入
3
9 1
4 2
20 1
输出
4
-1
9
说明
三组数据:
-1;9。输入
2
8 3
11 2
输出
-1
-1
说明
两组数据:
-1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册