0
点赞
收藏
分享

微信扫一扫

2022牛客寒假1 炸鸡块君的高中回忆(模拟水题)

十里一走马 2022-04-28 阅读 40
c++

在这里插入图片描述
在这里插入图片描述\

思路:

推公式。

先将 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", &t);
    while(t--)
    {
        int n, m; scanf("%lld%lld", &n, &m);
        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;
}

举报

相关推荐

0 条评论