#import <Foundation/Foundation.h>
//定义宏
#define N 15
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义报数
int j = 0;
//用于存放当前还有几个门徒编号不为0
int num = N ;
//用于存放叛徒编号
int result;
//用于存放15个门徒的编号
int a[N];
//通过循环给数组赋值
for (int i = 1; i <= N; i++)
a[i-1]= i;
//当叛徒还没有找到时就继续执行
while (num != 1){
//遍历门徒
for (int i = 0; i < N; i++)
//如果门徒编号部位零,则报数
if (a[i]!= 0){
//报数加一
j++;
//如果门徒报数为3,则将门徒的编号置0,同时将还剩下的门徒减一,并初始化报数
if (j % 3 == 0){
a[i] = 0;
num --;
j = 0;
}
}
}
//寻找叛徒的编号
for (j = 0; j < N; j++)
if (a[j] != 0){
result = a[j];
break;
}
//输出判读的编号
printf("%d\n",result);
}
return 0;
}
|