派对灯

成绩 100 开启时间 2020年02月18日 星期二 14:55
折扣 0.8 折扣时间 2020年02月18日 星期二 14:55
允许迟交 关闭时间 2020年02月18日 星期二 14:55
输入文件 lamps.in 输出文件 lamps.out

【题目描述】派对灯(lamps)USACO 2.2.4 Party Lamps

派对上有N盏彩色灯,它们分别从1到N被标上号码。

这些灯都连接到四个按钮:

按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄灭,本来是关着的灯被点亮。

按钮2:当按下此按钮,将改变所有奇数号的灯。

按钮3:当按下此按钮,将改变所有偶数号的灯。

按钮4:当按下此按钮,将改变所有序号是3×K+1(K≥0)的灯。例如:1,4,7,…

一个计数器C记录按钮被按下的次数。

初始所有的灯都亮着,此时计数器C为0。

你将得到计数器C(0≤C≤10 000)上的数值和经过若干操作后所有灯的状态。写一个程序找出所有灯最后可能的与所给出信息相符的状态。

【输入格式】

不会有灯会在输入中出现两次。

第一行为一个整数N(10≤N≤100)。  

第二行为计数器C最后显示的数值。 

第三行为最后亮着的灯,用一个空格分开,以-1为结束。 

第四行为最后关着的灯,用一个空格分开,以-1为结束。

【输出格式】

输出的每一行是所有灯可能的最后状态(没有重复)。每一行有N个字符,第1个字符表示1号灯,最后一个字符表示N号灯。0表示关闭,1表示亮着。这些行必须从小到大排列(看作是二进制数)。

如果没有可能的状态,则输出一行'IMPOSSIBLE'。

【输入样例】

10

1

-1

7 -1

【输出样例】

0000000000

0101010101

0110110110

【样例说明】

输入样例中,有10盏灯,只有1个按钮被按下。最后7号灯是关着的。

输出样例中,有三种可能的状态:

(1)所有灯都关着。

(2)1,4,7,10号灯关着,2,3,5,6,8,9号灯亮着。

(3)1,3,5,7,9号灯关着,2,4,6,8,10号灯亮着。