有数列定义为:F(0) = a, F(1) =b,F(n) = F(n-1)+F(n-2), 且0 < a < b < 20.现给出a, b, n,请问F(n)能否被3整除. Standard Input 有多组测试数据.输入的第一行是整数T(1<=T<=20),表示随后测试数据的组数.每组测试数据的第一行是正整数a, b, m, a,b的含义如前所述, m表示随后有m行,每行为前面所述的n, 0 < m < 100, 0 < n < 10^9. Standard Output 对应每组测试数据,共输出m行,如果每行对应的F(n)能被3整除,则输出一行”Yes”,否则输出一行”No”.两组测试数据的输出间,请输出一行空行.
时间: 2024-02-25 15:51:44 浏览: 94
请看以下 Python3 代码实现:
```python
def is_divisible_by_three(a, b, n):
f_n_minus_1, f_n = a, b
for i in range(2, n + 1):
f_n_minus_1, f_n = f_n, f_n_minus_1 + f_n
return f_n % 3 == 0
t = int(input())
for i in range(t):
a, b, m = map(int, input().split())
for j in range(m):
n = int(input())
if is_divisible_by_three(a, b, n):
print("Yes")
else:
print("No")
if i < t - 1:
print()
```
首先定义一个 `is_divisible_by_three` 函数,用于判断 $F(n)$ 是否能被 3 整除。函数中使用两个变量 `f_n_minus_1` 和 `f_n` 分别表示 $F(n-1)$ 和 $F(n)$,然后用循环从 $F(2)$ 开始逐个计算 $F(n)$,最后判断 $F(n)$ 是否能被 3 整除即可。
然后读入测试数据的组数 $T$,接下来的循环中,每次读入 $a$、$b$、$m$,然后再接着读入 $m$ 行,每行为 $n$,调用 `is_divisible_by_three` 函数判断 $F(n)$ 是否能被 3 整除,然后输出 "Yes" 或 "No"。
最后,如果不是最后一组测试数据,输出一个空行。
阅读全文