鲁智深吃不到馒头
1 问题导向
最近遇到一个问题,大致是这样:鲁智深到一个寺庙,寺庙里有连同住持、小和尚在内共99人,99个馒头。 鲁智深想吃馒头,住持不想分馒头给他,于是住持设计了一个游戏:他们100个人围成一圈坐着,从某个和尚开始数数:
1
、
2
、
3
、
4
、
5
1、2、3、4、5
1、2、3、4、5,数到数字
5
{\color{Red}{5}}
5 的人可以吃到馒头,并且出列。下一位继续从 1 开始数数,数到数字
5
{\color{Red}{5}}
5 的人可以吃到馒头,并且出列,下一位继续从 1 开始数数…以此类推。 请问住持改把鲁智深安排在第几号座位上,才能使他吃不到馒头,不能出列?(假设座位号总数=人数)
2 思考
如果思考素数筛选的方法,似乎可以把这个位置晒出来。当然,模数运算也有用。
总共有100个人,座位号有1~100,初始值都可以设为1;99个馒头,假设吃到馒头的人,其值可以设为0;必须要有计数5的一个计数器,并且要会循环。
3 代码
#include<iostream>
using namespace std
;
int main(){
int index
[100];
for(int i
= 0; i
< 100; i
++){
index
[i
] = 1;
}
int num
= 1;
int count
= 0;
for(int i
= 0; num
< 100; ++i
){
count
+= index
[i
%100];
if(count
== 5){
index
[i
%100] = 0;
num
++;
count
= 0;
}
}
for(int i
= 0; i
< 100; i
++){
if(index
[i
])cout
<< i
+1 << endl
;
}
return 0;
}