2016-08-07 |

有一排开关,第一个人把所有的开关打开,第二

A
B
C
D
答案:
解释:
有一排开关,第一个人把所有的开关打开,第二个人按2的倍数的开关,第三个人按3的倍数的开关,以此类推,现在又n个开关,k个人,写函数求最后等两者的开关,输入参数n和k


static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int k = int.Parse(Console.ReadLine());
            Function(100,100);
        }
        static void Function(int n, int k)
        {
            int i, j = 0;
            bool[] a = new bool[1000]; //初始false:关灯,true:开灯
            
            for (i = 1; i <= k; i++)      //k个人
                for (j = 1; j <= n; j++)  //n个灯
                    if (j % i == 0)
                        a[j] = !a[j]; //取反,false变true,原来开变关,关变开
 
            for (i = 1; i <= n; i++) //最后输出a[i]的值就可以了
                if (a[i]) //灯亮着
                    Console.WriteLine(i);
        }

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论