【数据结构 | C语言】排队

营业厅门口已经排起了长队,由于人数实在太多,营业厅决定先给所有人编号,第一个人是 2 号,第二个人是 3 号,以此类推;然后帮第一个人解决问题,而他后面每隔两个人(4 号,6号…)都不能接受服务了,再然后帮 3 号服务,其后每隔三个人(9 号,15 号…)就都无法接受服务,然后帮 5 号服务,其后的每隔 5 个人都无法接受服务。营业厅最多只愿意服务n 个人,求第 n 个人的编号。

输入格式:输入n
输出格式:输出第 n 个接受服务的人的编号。

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;cin>>n;int a[10005];
	for(int i=0;i<10005;i++)a[i]=i+2;//初始化编号 
	for(int j=0;j<10005;j++){
		if(a[j]!=0){
			int count=0;//计数器,用于跟踪每隔多少人剔除
			for(int i=j+1;i<10005;i++){
				if(a[i]!=0)count++;
				if(count==a[j]){//达到间隔数时,剔除
					a[i]=0;
					count=0; 
				}
			}
		}
	}
	int sum=0;
	for(int i=0;i<10005;i++){
		if(a[i]!=0)sum++;
		if(sum==n){
			cout<<a[i];break;
		}
	}return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值