给定一个仅由字符 0 和 1 组成的字符串 s 和一个正整数 n。进行 n 轮操作,每一轮按照如下规则构造一个新字符串 t:
对于给定的仅由字符‘0’和‘1’组成的字符串s,按照下方规则进行n 轮操作,每一轮:
新建一个为空的辅助字符串t;
对于第i个字符 si,如果si≡‘1’,在字符串t结尾插入字符串"01";反之,如果si=‘0’,在字符串t结尾插入字符‘1’。
将字符串t赋值给s,结束本轮。
求解,经过n 轮操作后,字符串s的长度。由于答案可能很大,请将答案对(109+7)取模后输出。
每个测试文件均包含多组测试数据。
第一行输入一个整数T(1≦T≦105)代表数据组数,每组测试数据描还如下:
在一行上输入一个长度为1≦len(s)≤105,仅由字符‘0’和‘1’组成的字符串 s。随后,输入一个整数n(1≦n≦1018)代表操作轮数。
除此之外,保证单个测试文件的n 之和不超过3×105。
对于每一组测试数据,新起一行。输出一个整数,代表经过n轮操作后,字符串s的长度。由于答案可能很大,请将答案对(109+7) 取模后输出。
输入
3
01 2
10101 1
101 10
输出
5
8
377
对于第一组测试数据:
第一轮,字符串t="1 01"
第二轮,字符串t="01 1 01"
综上,结束时字符串s的长度为5。
对于第二组测试数据:
第一轮,字符串t="01 1 01 1 01"
综上,结束时字符串s的长度为8。