P1145 约瑟夫

https://www.luogu.com.cn/problem/P1145
涉及知识点:暴力,枚举,搜索

橙色题
 
代码:
#include <stdio.h>
int main()
{
    int k,i;
    while (scanf("%d",&k)!=EOF)//个人输入习惯,请忽略
    {
        int flag=1,m=k;
        while (flag)
        {
            m++;//m至少为k+1
            int cursor=0;//设置光标的移动
            for (i=0; i<k; i++)
            {
                cursor=(cursor+m-1)%(2*k-i);//下一次出列之人的编号
                if (cursor<k)break;//判断出列的那个人是否小于k,小于就进行下一个m的判断
                if (i==k-1)flag=0;//说明已经找到最小的m
            }
        }
        printf("%d\n",m);
    }
    return 0;
}

 

posted @ 2022-07-21 17:19  -イレイナ  阅读(53)  评论(0)    收藏  举报