约瑟夫环问题(c语言数组实现)
题目描述
约瑟夫问题是一个有趣的游戏。有n个人围成一圈,从第一个人开始沿顺时针方向报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人?
输入要求
输入一个整数n。(n<=1000)
输出要求
输出最后剩下的数。
输入样例
5
输出样例
4
下面展示一些 内联代码片
。
// A code block
var foo = 'bar';
#include<stdio.h>
#include<math.h>
int main(){
int a[100]={0},b[1000]={0},i=0,j=1,k=0,bs=0,flag,n;
scanf("%d",&n);
while(k<n-1){
if(b[j]==0) bs++;
if(bs==3){
bs=0;
b[j]=1;
k++;
}
j++;
j=(j-1)%n+1;
}
for(i=1;i<=n;i++){
if(b[i]==0) printf("%d\n",i);
}
return 0;
}