zoukankan      html  css  js  c++  java
  • luogu P1145 约瑟夫

    题目描述

    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
    ",ans+1);
        return 0;
    }
  • 相关阅读:
    在Window上Vim包的选择
    如何在apache官网下载将将jar包
    hdu1870
    hdu1710(Binary Tree Traversals)
    poj 3252 Round Numbers 【推导·排列组合】
    3905
    Find them, Catch them
    Argus
    Team Queue
    Terrible Sets
  • 原文地址:https://www.cnblogs.com/sssy/p/7082616.html
Copyright © 2011-2022 走看看