使用埃拉托斯特尼筛预处理每个编号是否为质数:
维护变量 cur,表示后续的人执行完当前已经处理的指令后所在的位置。初始时所有人都在格子 1,所以 cur=1。
有一条从 1 开始编号的无限长一维格子,初始时,所有编号为质数的格子为黑格子,其余格子为白格子。共有 n 个人依次出发,且都从格子 1 起步,给定一个长度为 n 且仅包含字符 0 与 1 的指令串 s。第 i 个出发者将顺序执行 s 的前 i 条指令;每条指令的含义如下:
当第 i 个出发者完成其 i 条指令后,他会将此时所在的格子的颜色翻转。(黑变白、白变黑)。所有人依次出发,后出发者会受到先前颜色翻转的影响。
请输出所有最终颜色与初始颜色不同的格子的编号,按从小到大排列。
【名词解释】 质数:一个大于 1 的正整数,如果除了 1 和它自身以外不再有其他因数,那么这个数被称作质数。特殊地,1 既不是质数也不是合数。
每个测试文件均包含多组测试数据。第一行输入一个整数 t (1≤t≤104) 表示数据组数,每组测试数据如下:
除此之外,保证单个测试文件的 n 之和不超过 106。
对于每一组测试数据,输出两行:
输入
2
1
0
2
11
输出
1
4
2
2 5
说明
在第二组测试数据中:
因此共有 2 个格子颜色发生变化,分别为 2 与 5,升序输出为 2 5。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.