思路:
先判断能不能一次整好跳过去,如果可以,输出1。
如果不能一次整好跳到,就用最长的跳。两次最长的可以跳到 0 到 最长距离中间的任何一个距离。
跳的次数等于:(x + max(a) - l) / max(a)。 (x / l 向上取整)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int T;
cin >> T;
while(T--)
{
int n, x;
cin >> n >> x;
int l = 0;
int res = 0;
for(int i = 0; i < n; i++)
{
int temp;
cin >> temp;
if(x == temp) res = 1;
l = max(l, temp);
}
if(res == 1)
{
cout << res << endl;
continue;
}
res = 2;
res = max(res, (x + l - 1) / l);
cout << res << endl;
}
}
大佬 上取整为啥 那样写 我用
ceil(x/a)
咋不行呢这个函数我没用过,你查一下是不是用错了