早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c#N个人报数的题目n个人围成一圈报数,报到3和3的倍数的人离开,最后剩下一人是几号?最后剩下的那人报的数的总和是多少?

题目详情
c#N个人报数的题目
n个人围成一圈报数,报到3和3的倍数的人离开,最后剩下一人是几号?
最后剩下的那人报的数的总和是多少?
▼优质解答
答案和解析
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入人数:");
int n=int.Parse(Console.ReadLine());
//创建报数的人的集合
List persons=new List();
for (int i=0; i < n; i++)
{
persons.Add(new Person());
}
//集合的索引、上一个报数的人的索引、已离队的人数、当前所报的数
int index=0, lastIndex=0, leaveCount=0, call=0;
while (true)
{
//如果当前这个人未离队
if (!persons[index].Leave)
{
//如果他所报的数是3的倍数
if (++call % 3 == 0)
{
persons[index].Leave = true;
leaveCount++;
//如果只剩最后一个人就退出循环
if (n - leaveCount == 1) break;
}
else
{//否则,累积当前这个人所报的数的和
persons[index].Sum += call;
lastIndex = index;
}
}
//集合索引+1,达到上限会回到0
index = ++index % n;
}

Console.WriteLine("最后一个人是第{0}个,他报数的总和是:{1}.", lastIndex + 1, persons[lastIndex].Sum);
Console.ReadLine();
}

}
class Person
{
///
/// 报数的总和
///
public int Sum = 0;
///
/// 是否离开报数队列
///
public bool Leave = false;
}
看了c#N个人报数的题目n个人围成...的网友还看了以下:

有一根木头,第一天切去一半,第二天再切去剩下的一半,第三天再切去剩下一半的一半……这样切的完吗?这  2020-05-13 …

六年级学生借走3个又剩下的一半球,五年级借走了剩下的一半又半个球,三年级借了一个又借剩下的一半,还  2020-06-10 …

六年级学生借走3个又剩下的一半球,五年级借走了剩下的一半又半个球,三年级借了一个又借剩下的一半,还  2020-06-10 …

小学3年级数学求解题目:有一堆苹果第一天吃了一半加一个第二天吃了剩下的一半儿加一个同样第三天吃了剩  2020-06-10 …

智力PK赛题目--分牛从前有个农民,一生养了不少牛.去世前留下遗嘱:牛的总数的一半加半头给儿子,剩  2020-06-11 …

题目,甲有若干本书,乙借走了一半加1本;丙借走剩下的一半加2本;丁再借走剩下的一半加3本.最后甲还  2020-06-30 …

显微测量中,物镜放大倍数与该不同倍数下测得的实际长宽值有啥关系~就是假如物镜4倍下,用一目微尺测一长  2020-11-05 …

23.阅读下面一段文字,完成后面的题目。日前,烟台大学7位保洁员吃学生剩饭的照片蹿红网络。这些老人自  2020-11-25 …

教我分析下面题目哦》.1.米长的小棒,第1次截去一半,第2次截去剩下的一半,如此截下去,第7次后剩下  2020-12-25 …

递推发的题目有一堆棋子(棋子数大于1),把它四等份后剩一枚,拿去三份后零一枚,将剩下的棋子再四等份后  2020-12-28 …