这道题的思路就是 有以下情况
运输的时候我假设一直由同一个人进行递送校园卡
1、当校园卡数目小于或等于人数的时候,一次就可以所有人进入校门了,故可以直接输出为" 1 "
2、当校园卡数目小于或者等于一的时候,只有一个人能进入,或者所有人都不能进入 ,故直接输出为" -1 "
3、以上情况都没有时,用temp来记录一共几个来回,n=a-b的意思是除去第一次送入校园的人数 因为每一次只能帮助b-1个人进入校园(此时的b-1已经除开一直递送校园卡那一个人),因此用n/m记录一共有多少个来回,到最后,如果n%m!=0时,表明还有一小部分人没有进入校园,故temp在加一,多加一个来回,然后到最后计算所需要的时间,temp*2为来回需要的次数,在+1表示加上第一次送入的所需要的时间
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,a,b,temp,time,n,m;
cin>>i;
while(i--)
{
temp=0;
cin>>a>>b;
n=a-b;
m=b-1;
if(b>=a)
{
printf("1\n");
continue;
}
if(b<=1)
{
printf("-1\n");
continue;
}
temp=n/m;
if(n%m!=0) temp++;
time=temp*2+1;
printf("%d\n",time);
}
}