美文网首页
100盏灯被100个学生依次按照顺序,操作灯序号自身序号倍数

100盏灯被100个学生依次按照顺序,操作灯序号自身序号倍数

作者: 兜兜Jerry | 来源:发表于2021-05-16 13:34 被阅读0次

    描述:

    一间屋子里有100盏灯排成一行,按从左至右的顺序编号1、2、3、4、5…99、100,
    每盏灯都有一个开关,开始全部都关着,现有100个学生,
    第1个学生把1的倍数的灯全部拉一下,
    第2个学生把2的倍数灯全部都拉一下,
    第3个学生把3的倍数灯全部都拉一下

    第100个学生把100的倍数灯全部都拉一下,
    这时灯有多少是开着的?

    代码:

    - (void)test4{
        NSMutableArray *arrs = [NSMutableArray array];
        int count = 100;
        //alloc 100盏灯
        for (int i = 0; i < count; i ++) {
            //默认所有灯关闭
            [arrs addObject:@(0)];
        }
        //遍历每一栈灯
        for (int i = 1; i < count+1; i ++) {//数组index从0 开始,为了对齐与学生的序号,此处从1开始循环,循环次数100
            //每个学生操作一次:
            //规律: 第 i 个学生 智能操作与其序号成倍数的灯,即 操作的灯对其序号的余数为0;
            for (int j = 1; j < count + 1; j ++) {//数组index从0 开始,为了对齐与灯的序号,此处从1开始循环,循环次数100
                if (j % i == 0 && j >= i) {
                    arrs[j - 1] = @(![[arrs objectAtIndex:j - 1] intValue]);
                }
            }
        }
        [arrs enumerateObjectsUsingBlock:^(NSNumber*  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            if (obj.intValue == 1) {
                NSLog(@"== %lu", idx +1 );
            }
        }];
    }
    

    相关文章

      网友评论

          本文标题:100盏灯被100个学生依次按照顺序,操作灯序号自身序号倍数

          本文链接:https://www.haomeiwen.com/subject/smtrjltx.html