码迷,mamicode.com
首页 > 其他好文 > 详细

luogu P1145 约瑟夫

时间:2017-06-26 22:28:15      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:大神   code   开始   题目   数据   输入   break   scanf   mda   

题目描述

n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人。现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好人开始数数。你要确定一个最小的m,使得在第一个好人被杀死前,k个坏人先被杀死。

感谢yh大神指出样例数据的错误。

输入输出格式

输入格式:

 

一个k,0<k<14

 

输出格式:

 

一个m

 

输入输出样例

输入样例#1:
3
输出样例#1:
5
输入样例#2:
4
输出样例#2:
30

说明

0<k<14

枚举答案——检验

#include<cstdio>


int k,Ct;

bool Check( int m )
{
    Ct=0;
    for(int T=k*2;T!=k;T--)
    {
        (Ct+=m%T)%=T;
        if(Ct<k)return false;
    }
    return true;
}

int main()
{

    scanf("%d",&k);
    int ans;
    for(ans=1;;ans++ )
    if( Check(ans))break;
    printf("%d\n",ans+1);
    return 0;
}

 

luogu P1145 约瑟夫

标签:大神   code   开始   题目   数据   输入   break   scanf   mda   

原文地址:http://www.cnblogs.com/sssy/p/7082616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!