营业厅门口已经排起了长队,由于人数实在太多,营业厅决定先给所有人编号,第一个人是 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;
}
1659

被折叠的 条评论
为什么被折叠?



