描述
一个代码等式就是形如x1x2...xi=y1y2...yj,这里xi和yj是二进制的数字(0或1)或者是一个变量(如英语中的小写字母)。每一个变量都是一个有固定长度的二进制代码。例如:
a,b,c,d,e是变且它们的长度分别是4,2,4,4,2。考虑等式:1bad1=acbe,这个等式共有16组解。现要求任给一个等式,计算一共有多少组解。
(变量最多26个,长度和不超过10000)
输入格式
第一行数N为变量个数;
第二行N个数,为每个变量的位数
第三行为一个等式
输出格式
输出解的个数,无解输出0
输入样例
5
4 2 4 4 2
1bad1=acbe
输出样例
16
求解释16是怎么算出来的
根据“a,b,c,d,e是变且它们的长度分别是4,2,4,4,2”
可设a=xxxx,b=xx,c=xxxx,d=xxxx,e=xx
所以等式可写为
1 xx xxxx xxxx 1 = xxxx xxxx xx xx
1 b a d 1 = a c b e
为使等式成立,可将等式中的部分x确定,最终得到
1 xx 1xx1 xxxx 1 =1xx1 xx1x xx x1
1 b a d 1 = a c b e
先从左试看,b=xx可任意取值;b取值后右式的第2,3位即确定,既a以确定;同样右式中的b也确定,则只剩e的第1为和c的最后一位无法约束。
最终可任意取值的有4位(b的2位,c的最后一位,e的第一位),所以是2^4=16.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。