有n盏灯,编号1~n(0<n<100)。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依次类推。输入灯数和人数,输出开着的灯的编号。
using System;
namespace Task
{
class AppManager
{
/// <summary>
/// Switch Game 操作灯开关
/// </summary>
/// <param name="dengNum">灯的数量</param>
/// <param name="renNum">人的数量</param>
public static void TurnOffAndON(int dengNum, int renNum)
{
// 给dengNum盏灯,默认false状态,全关闭
bool[] dengState = new bool[dengNum];
// 遍历每一盏灯
for (int i =0; i < dengNum; i++)
{
for (int j = 1; j <= renNum; j++)
{
// 第一个人
if (j == 1)
{
//全部打开(默认关闭)
dengState[i] = !dengState[i];
}
else
{
// 其他人
if ( (i+1)%j == 0)
{
//开关操作
dengState[i] = !dengState[i];
}
}
}
}
//亮着的灯输出
for (int j = 0; j < dengNum; j++)
{
if (dengState[j])
{
Console.Write(j + 1);
Console.Write(",");
}
}
Console.Write("\b ");
}
}
}
using System;
namespace Task
{
class Program
{
static void Main(string[] args)
{
try
{
Console.Write("输入两个数,空格隔开(输入灯数和人数):");
String inputStr = Console.ReadLine();
//以空格分两部分字符串,数组储存
string[] inputt2 = inputStr.Trim().Split(' ');
//灯数
int dengNum = Convert.ToInt32(inputt2[0]);
// 人数
int renNum = Convert.ToInt32(inputt2[1]);
AppManager.TurnOffAndON(dengNum, renNum);
//暂停控制台
Console.Read();
} catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("请按要求输入数据格式");
}
}
}
}