天天看點

西普實驗吧CTF-約瑟夫環

題目描述:

總共有2 * k個人報數,前面k個是好人,後面k個是壞人,從第一個好人開始報數,報道m的人要死去。然後從死人的下一個活人繼續從頭開始報數,報道m的人死去,以此類推。當k = 12時,問m為何值時,壞人全部死去之前不會有好人死去。

這題之前做過,就是一個循環數組的周遊,之前打表了,代碼:

#include<stdio.h>
int main(){
	int n;
	int a[15]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};
	while(scanf("%d",&n)!=EOF && n)
		printf("%d\n",a[n]);
	return 0;
}
           

送出CTF{1358657},通過!