CF1796A.Typical Interview Problem
入门
通过率:0%
时间限制:2.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
The FB-string is formed as follows. Initially, it is empty. We go through all positive integers, starting from 1, in ascending order, and do the following for each integer:
- if the current integer is divisible by 3, append F to the end of the FB-string;
- if the current integer is divisible by 5, append B to the end of the FB-string.
Note that if an integer is divisible by both 3 and 5, we append F, and then B, not in the opposite order.
The first 10 characters of the FB-string are FBFFBFFBFB: the first F comes from the integer 3, the next character (B) comes from 5, the next F comes from the integer 6, and so on. It's easy to see that this string is infinitely long. Let fi be the i-th character of FB-string; so, f1 is F, f2 is B, f3 is F, f4 is F, and so on.
You are given a string s, consisting of characters F and/or B. You have to determine whether it is a substring (contiguous subsequence) of the FB-string. In other words, determine if it is possible to choose two integers l and r (1≤l≤r) so that the string flfl+1fl+2…fr is exactly s.
For example:
- FFB is a substring of the FB-string: if we pick l=3 and r=5, the string f3f4f5 is exactly FFB;
- BFFBFFBF is a substring of the FB-string: if we pick l=2 and r=9, the string f2f3f4…f9 is exactly BFFBFFBF;
- BBB is not a substring of the FB-string.
FB字符串按如下方式构造:初始时为空。我们从 1 开始,依次遍历所有正整数(升序),对每个整数执行以下操作:
- 若当前整数能被 3 整除,则在 FB 字符串末尾添加字符 F;
- 若当前整数能被 5 整除,则在 FB 字符串末尾添加字符 B。
注意:若某个整数同时能被 3 和 5 整除(即能被 15 整除),则先添加 F,再添加 B,顺序不可颠倒。
FB 字符串的前 10 个字符为 FBFFBFFBFB:第一个 F 来自整数 3,下一个字符(B)来自 5,再下一个 F 来自整数 6,依此类推。显然,该字符串是无限长的。记 fi 为 FB 字符串的第 i 个字符;因此,f1=F,f2=B,f3=F,f4=F,等等。
给定一个仅由字符 F 和/或 B 组成的字符串 s,你需要判断它是否为 FB 字符串的一个子串(即连续子序列)。换言之,需判断是否存在两个整数 l 和 r(满足 1≤l≤r),使得字符串 flfl+1fl+2…fr 恰好等于 s。
例如:
FFB是 FB 字符串的一个子串:取 l=3、r=5,则 f3f4f5 恰好为FFB;BFFBFFBF是 FB 字符串的一个子串:取 l=2、r=9,则 f2f3f4…f9 恰好为BFFBFFBF;BBB不是 FB 字符串的子串。
输入格式
The first line contains one integer t (1≤t≤2046) — the number of test cases.
Each test case consists of two lines. The first line contains one integer k (1≤k≤10) — the number of characters in s. The second line contains s, which is a string of exactly k characters. Each character of s is either F or B.
第一行包含一个整数 t(1≤t≤2046)—— 测试用例的数量。
每个测试用例由两行组成。第一行包含一个整数 k(1≤k≤10)—— 字符串 s 的字符个数。第二行包含字符串 s,其长度恰好为 k。s 的每个字符均为 F 或 B。
输出格式
For each test case, print YES if s is a substring of the FB-string, or NO otherwise.
You may print each letter in any case (YES, yes, Yes will all be recognized as positive answer, NO, no and nO will all be recognized as negative answer).
对于每个测试用例,如果 s 是 FB-字符串的子串,则输出 YES;否则输出 NO。
你可以以任意大小写形式输出每个字母(例如 YES、yes、Yes 均被视为肯定回答,NO、no、nO 均被视为否定回答)。
输入输出样例
输入#1
3 3 FFB 8 BFFBFFBF 3 BBB
输出#1
YES YES NO
输入解题思路,AI测评打分。不知道怎么写?