题目描述：

LeetCode 672. Bulb Switcher II

There is a room with `n` lights which are turned on initially and 4 buttons on the wall. After performing exactly `m` unknown operations towards buttons, you need to return how many different kinds of status of the `n` lights could be.

Suppose `n` lights are labeled as number [1, 2, 3 ..., n], function of these 4 buttons are given below:

1. Flip all the lights.
2. Flip lights with even numbers.
3. Flip lights with odd numbers.
4. Flip lights with (3k + 1) numbers, k = 0, 1, 2, ...

Example 1:

```Input: n = 1, m = 1.
Output: 2
Explanation: Status can be: [on], [off]
```

Example 2:

```Input: n = 2, m = 1.
Output: 3
Explanation: Status can be: [on, off], [off, on], [off, off]
```

Example 3:

```Input: n = 3, m = 1.
Output: 4
Explanation: Status can be: [off, on, off], [on, off, on], [off, off, off], [off, on, on].
```

Note: `n` and `m` both fit in range [0, 1000].

题目大意：

4种开关为：

1. 开关所有灯；
2. 开关偶数编号的灯；
3. 开关奇数编号的灯；
4. 开关(3k + 1)编号的灯，k = 0, 1, 2, ...

解题思路：

（偶数编号灯开关和奇数编号灯开关作用等效）

1. 全亮
2. 全亮，3k + 1
3. 奇数亮
4. 奇数亮，3k + 1
5. 偶数亮
6. 偶数亮，3k + 1
7. 全灭
8. 全灭， 3k + 1

Python代码：

``````class Solution(object):
def flipLights(self, n, m):
"""
:type n: int
:type m: int
:rtype: int
"""
if m * n == 0: return 1
if n == 1: return 2
if n == 2: return 4 - (m % 2)
if m == 1: return 4
if m == 2: return 7
return 8
``````

Pingbacks已关闭。