2017西安邀请赛problem A

问题描述:三个矩阵 A(1*n) B(n*m) C(1*m) 矩阵只由01组成 令a*b=c   现在知道c问 有多少种不同的a,b使条件成立


   c11=             c12=               .........             c1m=

a11*b11         a11*b12                               a11*b1m

      +                     +                                            +

a1i*bi1          a1i*bi2                                   a1i*bim


C的第i列只与B的第i列有关   


假设n=3

a矩阵的情况有                           假设c11=1

0 0 0                                                  

0 0 1                                             对于001   对应 b11 只能是1    b21 b31 这两位任填  有2^2=4种情况 

0 1 0                                             a矩阵上的0*b矩阵的对应位置上的数 依然为0 对c11的取值没影响 所以可以任选  对于0有2^(n-i)  种情况   i为1的个数

0 1 1                                             对于011   对应 b31 任填    b21 b31 这两位填1的个数只能是奇数   对于一个01串  1的个数出现奇数次 等于这个01串全部情况的一半  2*2^2/2=4

1 0 0                                             对于1有2^i/2种情况

1 0 1                                                   

1 1 0

1 1 1                                                                                   

所以当a矩阵有i个1的时候   b矩阵的取值情况有          2^(n-i)*2^i/2=2^(n-1)

当c11=0时  同理0任选  1只能为偶数个也是01串的一半 式子也是  2^(n-1)

对于a 有2^n-1种情况  排除全0   

有(2^n-1)*(2^(n-1))

因为b矩阵有m列

(2^n-1)*(2^(n-1))*...*(2^(n-1))  共m个(2^(n-1))

=(2^n-1)*(2^(nm-m))

当c矩阵全0时

要加上a矩阵全0的情况   共2^(m*n)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值