开灯问题

问题描述:有N个灯,(每个灯只有一个开关,按一下开,再按一下关)来了K个人,第一个人把所有灯都打开,第二个人按下了所有编号为2的倍数的灯的开关,第三个人按下所有编号为3的倍数的灯的开关……按此规律。问最后那些灯亮着?

输入:7 3

输出:1 5 6 7

 

 

代码
using System;

namespace test
{
    
class Program
    {
        
public static void Main(string[] args)
        {
            
bool[] a=new bool[100];//灯开关的状态
            
            Console.Write(
"输入灯的数目:");
            
int n=Convert.ToInt32(Console.ReadLine());
            Console.Write(
"输入人数:");
            
int k=Convert.ToInt32(Console.ReadLine());
            
            
for (int i=1;i<=k;i++)
            {
                
for (int j=1;j<=n;j++)
                {
                    
if (j % i == 0)
                    {
                        a[j] 
= !a[j];
                    }
//end if
                }//end for
            }//end for
            
            Console.Write(
"亮着的灯为:");
            
for (int i=1;i<=n;i++)
            {
                
if(a[i])
                {
                    Console.Write(
"{0} ",i);
                }
            }
//end for
            Console.WriteLine();
            Console.WriteLine(
"Press any key to continue . . . ");
            Console.ReadKey(
true);
        }
    }
}

 

 

posted @ 2009-12-20 18:25  盈不足  阅读(799)  评论(0编辑  收藏  举报