为什么 10,3 这个例子所有题解代码都是 10,但是我手动模拟和代码模拟答案都是 4?
#include<bits/stdc++.h>
using namespace std;
int n,m,x,a[205],b[205],i,j,k;
bool f[205];
int main(){
while(cin>>n>>m){
if(n==0&&m==0)break;
for(j=0;j<n;j++){
for(i=1;i<=n;i++)f[i]=0,b[i]=i;
x=j;
for(k=1;k<=n;k++){
for(i=1;i<=m;i++){
x=(x%n)+1;
if(f[b[x]])i--;
}
a[k]=b[x];
int c=x;
for(i=1;i<=m;i++){
c=(c%n)+1;
if(f[b[c]])i--;
}
swap(b[x],b[c]);
f[b[c]]=1;
}
if(a[n]==1){cout<<j+1<<"\n";break;}//因为 j 从 0 开始,所以要 +1
}
}
return 0;
}