耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:
答案:4 悬赏:30 手机版
解决时间 2021-03-21 16:14
- 提问者网友:王者佥
- 2021-03-21 13:15
耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
最佳答案
- 五星知识达人网友:轮獄道
- 2021-03-21 13:42
丢手绢算法
/////////////////////////////////////////
// 魔比斯环算法 /
// n个人,从第k个人开始数,数到a的离开 /
// 问你最后一个离开的是谁,或者所有的 /
// 人离开顺序 /
/////////////////////////////////////////
#include <iostream>
using namespace std;
class Moebius {
private:
int* place;
int n; //圈内人数
int k; //从第k个人报数
int a; //报数的终止值(从1 - a报数)
void delPlace(int); //报数为a的人离开环
public:
Moebius (){}; //无参构造函数
Moebius ( int, int, int );//构造函数
void Moebius::listInit (); // 得到环的原始顺序列表
void Moebius::listMove ();//得到环的出圈顺序
};
Moebius::Moebius ( int _n, int _k, int _a ) { // 定义构造函数
int i;
n = _n;
k = _k;
a = _a;
place = new int[n];
for ( i = 0; i < n; i++ )
place[i] = i + 1;
}
void Moebius::listInit () { // 输出环内人员原始顺序列表
int i;
cout << "魔比斯环初始人员顺序列表:" << endl;
for ( i = 0; i < n; i++ )
cout << " " << place[i];
cout << endl;
}
void Moebius::listMove () { //输出环内人员离开顺序
int iPlace = k - 1; //确定第一个报数的人的位置
cout << "魔比斯环内的人离开顺序列表:" << endl;
while ( n ) { //直到环内没人为止
iPlace = (iPlace + a - 1) % n; //确定下一个离开的人
cout << " " << place[iPlace];
delPlace(iPlace);//报数后离开环
n--;//环内少一人
}
cout << endl;
}
void Moebius::delPlace ( int iPlace ) {//下标为iPlace的人离开环
int i;
for ( i=iPlace; i < n - 1; i++)
place[i] = place[i + 1];
}
//主函数
void main () {
int n,k,a;
cout << endl << "请输入环内人数:";
cin >> n;
cout << endl << "请输入从第几个人开始报数:";
cin >> k;
cout << endl << "请输入每次报数从1报到几:";
cin >> a;
Moebius m(n,k,a);
m.listInit();
m.listMove();
}
/////////////////////////////////////////
// 魔比斯环算法 /
// n个人,从第k个人开始数,数到a的离开 /
// 问你最后一个离开的是谁,或者所有的 /
// 人离开顺序 /
/////////////////////////////////////////
#include <iostream>
using namespace std;
class Moebius {
private:
int* place;
int n; //圈内人数
int k; //从第k个人报数
int a; //报数的终止值(从1 - a报数)
void delPlace(int); //报数为a的人离开环
public:
Moebius (){}; //无参构造函数
Moebius ( int, int, int );//构造函数
void Moebius::listInit (); // 得到环的原始顺序列表
void Moebius::listMove ();//得到环的出圈顺序
};
Moebius::Moebius ( int _n, int _k, int _a ) { // 定义构造函数
int i;
n = _n;
k = _k;
a = _a;
place = new int[n];
for ( i = 0; i < n; i++ )
place[i] = i + 1;
}
void Moebius::listInit () { // 输出环内人员原始顺序列表
int i;
cout << "魔比斯环初始人员顺序列表:" << endl;
for ( i = 0; i < n; i++ )
cout << " " << place[i];
cout << endl;
}
void Moebius::listMove () { //输出环内人员离开顺序
int iPlace = k - 1; //确定第一个报数的人的位置
cout << "魔比斯环内的人离开顺序列表:" << endl;
while ( n ) { //直到环内没人为止
iPlace = (iPlace + a - 1) % n; //确定下一个离开的人
cout << " " << place[iPlace];
delPlace(iPlace);//报数后离开环
n--;//环内少一人
}
cout << endl;
}
void Moebius::delPlace ( int iPlace ) {//下标为iPlace的人离开环
int i;
for ( i=iPlace; i < n - 1; i++)
place[i] = place[i + 1];
}
//主函数
void main () {
int n,k,a;
cout << endl << "请输入环内人数:";
cin >> n;
cout << endl << "请输入从第几个人开始报数:";
cin >> k;
cout << endl << "请输入每次报数从1报到几:";
cin >> a;
Moebius m(n,k,a);
m.listInit();
m.listMove();
}
全部回答
- 1楼网友:十鸦
- 2021-03-21 15:49
13/3=4..1 (13-4)/3=3 则最后留在圈内的人原来的符号是13
- 2楼网友:醉吻情书
- 2021-03-21 15:29
2
- 3楼网友:woshuo
- 2021-03-21 13:55
耶稣有12个门徒一个叛徒
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯