[C#] 纯文本查看 复制代码
// 100个数,代表100盏灯,默认初始化为0
int []all = new int[100];
// 100个人开始拉灯
for (int i = 1; i <= 100;i++ )
{
// 100盏灯进行判断
for (int j = 1; j <= 100;j++ )
{
// 逻辑判断
if ( j%i == 0)
{
all[j-1]++; // 注意数组是从0开始
}
}
}
// 判断最终结果,拉一次数字加1,因为初始状态为关,所以可以认为奇数为开,偶数为关。
for (int k = 0; k < 100;k++ )
{
if ( all[k] % 2 != 0)
{
Console.WriteLine("{0}号灯亮着", k+1);
}
}
[C#] 纯文本查看 复制代码
bool[] states = new bool[100];
private void lamps_Load(object sender, EventArgs e)
{
//给100个灯泡状态初值;
for (int i = 0; i < 100; i++)
{
states = false;
}
}
#region 第j个同学进行拉灯
public void Operate(int j)
{
for (int k = 1; k < 101; k++)
{
if (Math.IEEERemainder(k,j)==0) //获得操作权
{
if (states[k - 1] == true) //改变两种状态
{ states[k - 1] = false; }
else if (states[k - 1] == false)
{ states[k - 1] = true; }
}
}
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
for (int j = 1; j < 101; j++) //遍历100个同学操作
{
Operate(j);
}
for (int m = 0; m < 100; m++)
{
if (states[m] == true)
{
textBox1.Text += m + 1 + " ";
}
}
}