A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© m__dd 中级黑马   /  2015-2-4 20:14  /  1542 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(C语言)

实现代码(仅供参考):


/***********************************************************************
**m总人数,则标号为0~m-1   n为要数的数
**成功返回序号,失败返回-1
***********************************************************************/
int find_badman(int m, int n)
{
    int i;
    int badman;
    if (m <= 0 || n <= 0) {
        return -1;
    }
    badman = 0;                        /* 当只有一个人时,编号为0的出圈 */
    for (i = 2;i <= m;i++) {           /* 循环num-1次将剩下一个人       */
        badman = (badman + n % i) % i; /* 这样写易理解,或(badman+n)%i  */
    }
    return badman + 1;                 /* 程序从0编号,返回时应+1       */
}



8 个回复

倒序浏览
我上大一的时候考试过这一题
回复 使用道具 举报
和我的一样,可惜我不会做
回复 使用道具 举报
我怎么没碰到了!
回复 使用道具 举报
问一下 你的这个程序是正确的嘛?
回复 使用道具 举报
张洪丽 发表于 2015-2-6 02:57
问一下 你的这个程序是正确的嘛?

都贴出来了  当然正确了  不过还有其他方法,比如递归    或者加一些判断,减少时间复杂度等等
回复 使用道具 举报
m__dd 发表于 2015-2-6 10:23
都贴出来了  当然正确了  不过还有其他方法,比如递归    或者加一些判断,减少时间复杂度等等 ...

问没看懂 所以就问一下啦  大神能给讲解一下嘛?
回复 使用道具 举报
请问是什么语言的代码?{:3_66:}
回复 使用道具 举报
余永健 发表于 2015-2-6 13:18
请问是什么语言的代码?

这段代码 C C++ OC均可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马