题解:首先理解这组数组的最小可能,笼统的看就是和的最小值,也可以理解成ki(i是整数且ki=sum(a[n]))
这里我们可以得到数组的和,已知数组和 和 数组的个数,我们可以用一排排上1的思想(假使有n个洞,sum个小球,我们尽可能使每个洞分布的小球一样,依次给小球,每个洞中小球的个数差为0或1)鸽巢原理
(字有点丑······)
原理搞清楚了,我们就很容易求出来了。
(
此外一定要注意特殊情况:
8 4············ 4可以变8····相当于k=n
9 9 ············ k=n 时为1
9 1············当k=1时,sum=n
)
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define ll long long
#define mm (1e7)
int main(void)
{
ll n,k;
ll t;
scanf("%lld",&t);
ll eq=0;
while(t--)
{
scanf("%lld%lld",&n,&k);
if(n==1)
{
printf("%lld\n",k);
continue;
}else if(n==k||k==1||n%k==0)
{
printf("1\n");
continue;
}else if(k%n==0)
{
printf("%lld\n",k/n);
continue;
}else if(n>k)
{
ll p = ceil(n*1.0/k);
k=k*p;
}
ll pi=k/n;
ll py=k%n;
if(py!=0)
eq=pi+1;
else
eq=eq;
printf("%lld\n",eq);
}
return 0;
}
若有不足欢迎指出!!