#HK5105. 「POI2009 R3」单词 Words

「POI2009 R3」单词 Words

题目描述

题目译自 XVI OI Olimpiada Informatyczna – III etap Słowa

hh 为定义在由数字 0011 组成的字符串上的函数。函数 hh 将字符串 ww 转换为新字符串,规则为:同时且独立地将每个 0\texttt{0} 替换为 1\texttt{1},每个 1\texttt{1} 替换为字符串 10\texttt{10}。例如,$h(\texttt{1001}) = \texttt{101110},h(\texttt{""}) = \texttt{""}$(即空字符串映射为空字符串)。显然,hh 是一一映射。记 hkh^k 为函数 hh 与自身 kk 次复合,特别地,h0h^0 为恒等函数,即 h0(w)=wh^0(w) = w

我们关注形如 hk(0)h^k(\texttt{0}) 的字符串,其中 k=0,1,2,3,k = 0, 1, 2, 3, \ldots。以下是前几个字符串: $\texttt{0}, \texttt{1}, \texttt{10}, \texttt{101}, \texttt{10110}, \texttt{10110101}$。

若字符串 xxyy 的子串,则 xx 作为 yy 的连续子序列出现。给定自然数序列 k1,k2,,knk_1, k_2, \ldots, k_n,任务是判断字符串

$$h^{k_1}(\texttt{0}) \cdot h^{k_2}(\texttt{0}) \cdot \ldots \cdot h^{k_n}(\texttt{0}) $$

是否为某个 hm(0)h^m(\texttt{0}) 的子串,其中 \cdot 表示字符串拼接(连接)。

输入格式

第一行包含一个整数 tt (1t13)(1 \leq t \leq 13),表示测试数据组数。

每组测试数据包含:

  • 第一行:一个整数 nn (1n100000)(1 \leq n \leq 100000)
  • 第二行:nn 个非负整数 k1,k2,,knk_1, k_2, \ldots, k_n,用单空格分隔。每组测试数据中第二行数字之和不超过 1000000010000000

输出格式

输出 tt 行,每行对应一组测试数据,若 $h^{k_1}(\texttt{0}) \cdot h^{k_2}(\texttt{0}) \cdot \ldots \cdot h^{k_n}(\texttt{0})$ 是某个 hm(0)h^m(\texttt{0}) 的子串,输出 TAK,否则输出 NIE

2
2
1 2
2
2 0

TAK
NIE

  • 第一组测试数据的字符串为 110\texttt{110}($h^1(\texttt{0}) = \texttt{1}, h^2(\texttt{0}) = \texttt{10}$,拼接得 110\texttt{110}),它是 h4(0)=10110h^4(\texttt{0}) = \texttt{10110} 的子串。
  • 第二组测试数据的字符串为 100\texttt{100}($h^2(\texttt{0}) = \texttt{10}, h^0(\texttt{0}) = \texttt{0}$,拼接得 100\texttt{100}),它不是任何 hm(0)h^m(\texttt{0}) 的子串。