You can use cellfun to operate on each element in A separately, and bsxfun to multiply each row in the matrices in A by one element in B:
celltimes = @(A) bsxfun(@times,A,B.');
C = cellfun(celltimes,A,'UniformOutput',false)
the result:
>> celldisp(C)
C{1} =
Columns 1 through 4
5000 0 0 5000
0 5500 5500 8250
6000 0 0 7200
6500 0 0 0
12600 9100 0 0
0 5500 0 0
Columns 5 through 7
0 10000 7500
0 0 11000
6600 0 0
12350 0 9100
0 10500 0
0 5500 8250
C{2} =
Columns 1 through 4
0 0 5000 0
5500 5500 8250 0
0 0 7200 6600
0 0 0 12350
9100 0 0 0
6050 0 7150 0
Columns 5 through 6
10000 7500
0 11000
0 0
0 9100
10500 0
8250 0
As pointed by @Adriaan in the comments, in Matlab 2016b bsxfun is implicitly implemented, so you can just write:
C = cellfun(@(A) A.*B.',A,'UniformOutput',false);