算法:100人围圈,数到14退出,从1开始继续数

有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新 开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?

    NSMutableArray *array = [[NSMutableArray alloc]init];
    //100个集合
    for (int i =1 ; i<=100;i++) {
        [array addObject:[NSNumber numberWithInt:i]];
    }
    
    //思路:1...14 14退出,15当做1继续从头开始,循环,
    //相当于循环14次,删除最后一次的数,循环
    //把前13个数依次放到集合的末尾,将第一个数删除(其实第一个就是14)
    //依次类推,把前13个数依次放到集合的末尾,将第一个数删除
    
    while ([array count] >1) {
        
        for (int i =0; i<13; i++) {
            [array addObject:[array firstObject]];
            [array removeObjectAtIndex:0];
        }
        [array removeObjectAtIndex:0];
    }
    
    NSLog(@"%@",array);
    

你可能感兴趣的:(算法:100人围圈,数到14退出,从1开始继续数)