CF1796A.Typical Interview Problem

传统题 时间 2000 ms 内存 256 MiB 3 尝试 2 已通过 1 标签

Typical Interview Problem

题目描述

FB-string 的构造方式如下:初始时字符串为空。我们从 11 开始,依次遍历所有正整数,对于每个整数,执行以下操作:

  • 如果当前整数能被 33 整除,则在 FB-string 末尾添加一个 F;
  • 如果当前整数能被 55 整除,则在 FB-string 末尾添加一个 B。

注意,如果某个整数同时能被 3355 整除,先添加 F,再添加 B,顺序不能颠倒。

FB-string 的前 1010 个字符为 FBFFBFFBFB:第一个 F 来自整数 33,下一个字符 B 来自 55,下一个 F 来自 66,以此类推。显然,这个字符串是无限长的。设 fif_i 表示 FB-string 的第 ii 个字符;因此,f1f_1 是 F,f2f_2 是 B,f3f_3 是 F,f4f_4 也是 F,依此类推。

现在给定一个只包含 F 和/或 B 的字符串 ss,请判断它是否为 FB-string 的一个子串(即是否存在一对整数 llrr,满足 1lr1 \le l \le r,使得 flfl+1fl+2frf_l f_{l+1} f_{l+2} \dots f_r 恰好等于 ss)。

例如:

  • FFB 是 FB-string 的一个子串:取 l=3l=3r=5r=5,则 f3f4f5f_3 f_4 f_5 恰好为 FFB;
  • BFFBFFBF 是 FB-string 的一个子串:取 l=2l=2r=9r=9,则 f2f3f4f9f_2 f_3 f_4 \dots f_9 恰好为 BFFBFFBF;
  • BBB 不是 FB-string 的一个子串。

输入格式

第一行包含一个整数 tt1t20461 \le t \le 2046),表示测试用例的数量。

每个测试用例包含两行。第一行包含一个整数 kk1k101 \le k \le 10),表示字符串 ss 的长度。第二行包含一个恰好为 kk 个字符的字符串 ss,每个字符均为 F 或 B。

输出格式

对于每个测试用例,如果 ss 是 FB-string 的一个子串,输出 YES;否则输出 NO。

你可以以任意大小写输出答案(YES、yes、Yes 都视为正解,NO、no、nO 都视为负解)。

说明/提示

由 ChatGPT 4.1 翻译

样例

3
3
FFB
8
BFFBFFBF
3
BBB
YES
YES
NO

在线编程 IDE

建议全屏模式获得最佳体验