672. Bulb Switcher II
Description
Intuition
- 初步观察可得,如果update了 xlight,那么(x+6)light.
- 进一步观察可得 - Assume: - adenotes Flip all the lights.
- bdenotes Flip lights with even numbers.
- cdenotes Flip lights with odd numbers.
- Ddenotes Flip lights with (3k + 1) numbers, k = 0, 1, 2, ...
 
- Light 1 = 1 + a + c + d 
- Light 2 = 1 + a + b
- Light 3 = 1 + a + c
- Light 4 = 1 + a + b + d
- Light 5 = 1 + a + c
- Light 6 = 1 + a + b
 - 那么可以发现, - Light 4 = (Light 1) + (Light 2) + (Light 3)
- Light 5 = Light 3
- Light 6 = Light 2
 
- 所以,我们可以用头3个灯泡来表示所有的灯泡状态 - m == 1,所以有- a,- b,- c,- d四种操作- 1 1 1 (Orignal) 0 0 0 (a) 1 0 1 (b) 0 1 0 (c) 0 1 1 (d)
- m == 2- 1 1 1 (Orignal) 1 1 1 (aa -> null) 0 1 0 (ab -> c) 1 0 1 (ac -> b) 1 0 0 (ad -> null) 0 1 0 (ba -> ab) 1 1 1 (bb -> null) 0 0 0 (bc -> a) 0 0 1 (bd -> null) 1 1 0 (cd -> null)- n == 1,- return 2
- n == 2,- 11,- 00,- 01,- 10,- return 4
- n == 3,- 111,- 110,- 101,- 100,- 010,- 001,- 000,- return 7
 
- m == 3
 
  ```java
  1 1 1 (Orignal)
  0 0 0 (aaa -> a)
  1 0 1 (aab -> b)
  0 1 0 (aac -> c)
  0 0 1 (aad -> d)
  1 1 1 (abc -> null)
  1 1 0 (abd -> cd)
  0 0 1 (acd -> bd)
  1 0 0 (bcd -> ad)
  ```
  1. `n == 1`, `return 2`
  1. `n == 2`, `11`, `00`, `01`, `10`, `return 4`
  1. `n == 3`, `111`, `110`, `101`, `100`, `011`, `010`, `001`, `000`, `return 8`