题目给定了n个密匙片段,每个片段均为长度为m的二进制字符串(仅含字符′0′和′1′)。要求从这n个片段中任意选择若干(至少一个),将选择的片段进行按位或运算,得到一个二进制数。把这个二进制数转换为十进制后,只有当其正好为质数时才被视为一个合法的密钥。要求统计所有能够构造出的不同质数密钥的个数。
我们截获了n条片段,每一个片段均由m个字符组成,字符为‘0’或者‘1’。
你可以选择一些片段,将它们做按位或运算后,生成一个完整的密钥。根据加密算法的需求,合成后的密钥在转换为十进制的数值后必须
恰好为一个质数,才能符合安全系统的运算要求(质数在许多公钥密码体系中具有特殊意义)。
请你设计一个程序,帮助安全专家确定:任意选取片段,能得到多少个不同的质数密钥?
第一行输入两个正整数n,m(1≦n≦20;1≦m≦14)代表片段数量、片段长度。
此后n行,第i行输入一个长度为m,仅由字符‘0’和‘1’组成的字符串 Si表示第i个片段。
输出一个整数,代表能得到的质数密钥的数量。
输入
3 4
0010
1000
1010
输出
1
在这个样例中,选择第一条密匙片段,(0010)2,是一个质数。我们可以证明,这是唯一一种能得到质数密匙的选取方案。
输入
3 3
100
001
110
输出
2
在这个样例中,一共有两种选取方案,分别是:
输入
2 4
1000
0000
输出
0