开发者社区> 问答> 正文

C 代码等式问题~~~~~

描述
一个代码等式就是形如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是怎么算出来的

展开
收起
a123456678 2016-03-20 13:48:56 2355 0
1 条回答
写回答
取消 提交回答
  • 根据“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.

    2019-07-17 19:09:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载