约瑟夫环:
f[i]=(f[i-1]+m)%i
//变种约瑟夫环 1005 小白兔智斗狐狸
f[0]=n;第一次数到的地方。
思路: f[i]=(f[i-1]+i)%n;
#define M 2002
int f[M],n;
bool vis[M];
void solve()
{
f[0]=n;
for(int i=1;i<=n;i++)
{
f[i]=(f[i-1]+i-1)%n+1;
vis[f[i]]=1;
}
bool f=1;
for(int i=1;i<n;i++)
if(!vis[i])
{
if(f)printf("%d",i);
else printf(" %d",i);
f=0;
}
if(f)printf("no safe caves\n");
else printf("\n");
}
int main()
{
int T;
cin>>T;
while(T--)
{
CLS(vis,0);
cin>>n;
solve();
}
//每次失败的地方开始,向后数m个又是失败
return 0;
}