朋友们,帮帮我!
  • 板块题目总版
  • 楼主Qutiange
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/12/17 20:05
  • 上次更新2023/11/5 06:01:17
查看原帖
朋友们,帮帮我!
346670
Qutiange楼主2020/12/17 20:05
题目描述 Description
有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。

输入描述 Input Description
输入两个数据n和m,其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)

输出描述 Output Description
输出每个人的退出顺序编号(第几个人的退出次序是几)

样例输入 Sample Input
12 5
样例输出 Sample Output
12 10 3 5 1 11 8 7 4 2 9 6
数据范围及提示 Data Size & Hint
2<=n<=50
0<m<n
#include<iostream>
using namespace std;
int res,cnt,pos=1,n,ii,m;
int a[55];
bool vis[55];
int main(){
	cin>>n>>m;
	res=n;
	for(int i=1;i<=n;i++){
		a[i]=i;
	}
	while(1){
		ii++;
		if(res==1) break;
		if(!vis[pos]){
			cnt++;
			if(cnt==m){
				vis[pos]=true;
				cout<<a[ii]<<" ";
				cnt=0;
				res--;
				ii=0;
			}
		}
		pos++;
		if(pos==n+1)  pos=1;
	}
	return 0;
}

请指出错误,样例没过,谢谢Thanks♪(・ω・)ノ

2020/12/17 20:05
加载中...