\
思路:
推公式。
先将 m 个人进校一次,消耗时间为 1(因为无需使者一来一回)
剩下n-m个人,每次m-1人进校,进n-m/m-1次校
余(n-m)%(m-1)人,若为0则无需进校,次数为0,若不为0则进1次校
进一次校要花2单位时间(因为需要使者一来一回)
代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int t; scanf("%lld",
while(t--)
{
int n, m; scanf("%lld%lld",
if(n==m)
{
puts("1");
continue;
}
if(m==1)
{
if(n==1) puts("1");
else puts("-1");
}
else
{
int res = 1;//先将 m 个人进校一次,消耗时间为 1(因为无需使者一来一回)
int tmp = (n - m) / (m - 1);//剩下n-m个人,每次m-1人进校,进tmp次校
int rmd = (n - m) % (m - 1);//余rmd人,若为0则无需进校,次数为0,若不为0则进1次校
res += (tmp + ((!rmd) ? 0 : 1)) * 2;//进一次校要花2单位时间(因为需要使者一来一回)
printf("%lld\n", res);
}
}
return 0;
}