1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| Program Lwx; Const md=100000000; Var n, m:longint; i, j, k, l, a, b, c:longint; f, g:array[0..15, 0..5000] of longint; p:array[0..15] of longint;
Procedure given(x:longint); Var i:longint; Begin for i :=1 to n do if p[i] and x = 0 then begin inc(f[i, 0]); f[i, f[i, 0]]:=x; end; End;
Procedure find(x, y:longint); Var a, b, c:longint; Begin if x = m then begin given(y); exit; end; if y and 1= 0 then find(x+1,y shl 1+1); find(x+1, y shl 1); End;
Begin readln(n, m); for i := 1 to n do begin k := 0; for j :=1 to m do begin read(a); k := k shl 1 + (a+1) mod 2; end; p[i] := k; end; fillchar(f, sizeof(f), 0); find(0, 0); f[0, 0] := 1; f[0, 1] := 0; g[0, 1] := 1; for i := 1 to n do for j := 1 to f[i, 0] do begin g[i, j] := 0; for k :=1 to f[i-1, 0] do if f[i, j] and f[i-1, k]=0 then g[i, j] := (g[i, j]+g[i-1, k]) mod md; end; L := 0; for i := 1 to f[n, 0] do L := (L+g[n, i]) mod md; write(L); End.
|