3988:[GESP202409五级] 挑战怪物
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:普通裁判
金币值:
命题人:
提交:1
解决:0
题目描述
## 题目背景
2024 年 9 月 GESP C++ 五级编程第 2 题
## 题目描述
⼩杨正在和⼀个怪物战⽃,怪物的⾎量为 $h$ ,只有当怪物的⾎量**恰好**为 $0$ 时⼩杨才能够成功击败怪物。
⼩杨有两种攻击怪物的⽅式:
+ 物理攻击。假设当前为⼩杨第 $i$ 次使⽤物理攻击,则会对怪物造成 $2^{i-1}$点伤害。
+ 魔法攻击。⼩杨选择任意⼀个质数 $x$( $x$ 不能超过怪物当前⾎量),对怪物造成 $x$ 点伤害。由于⼩杨并不擅长魔法,他只能使⽤⾄多⼀次魔法攻击。
⼩杨想知道⾃⼰能否击败怪物,如果能,⼩杨想知道⾃⼰最少需要多少次攻击。
## 输入格式
第⼀⾏包含⼀个正整数 $t$,代表测试⽤例组数。
接下来是 $t$ 组测试⽤例。对于每组测试⽤例,第⼀⾏包含⼀个正整数 $h$ ,代表怪物⾎量。
## 输出格式
对于每组测试⽤例,如果⼩杨能够击败怪物,输出⼀个整数,代表⼩杨需要的最少攻击次数,如果不能击败怪物,输出 $-1$。
## 样例1
```input1
3
6
188
9999
```
```output1
2
4
-1
```
## 样例解释
对于第⼀组测试⽤例,⼀种可能的最优⽅案为,⼩杨先对怪物使⽤魔法攻击,选择质数 $5$ 造成 $5$ 点伤害,之后对怪物使⽤第 $1$ 次物理攻击,造成 $2^{1-1}=1$ 点伤害,怪物⾎量恰好为 $0$,⼩杨成功击败怪物。
## 数据范围
| 子任务编号 | 数据点占比 | $t$ | $h$ |
| ---------- | ---------- | --------- | ----------- |
| 1 | $20\%$ | $\leq 5$ | $\leq 10$ |
| 2 | $20 \%$ | $\leq 10$ | $\leq100$ |
| 3 | $60\%$ | $\leq 10$ | $\leq 10^5$ |
对于全部数据,保证有 $1 \leq t \leq 10 ,1 \leq h \leq 10^5$。