求解答
查看原帖
求解答
1432246
_qumingnan_楼主2024/12/13 15:19

为什么 10,310,3 这个例子所有题解代码都是 1010,但是我手动模拟和代码模拟答案都是 44

#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;
}
2024/12/13 15:19
加载中...