SPBINARY - Xâu Nhị Phân
Tác giả: ll931110
Ngôn ngữ: Pascal
{$MODE DELPHI}
program SPBINARY;
const
input = '';
output = '';
maxn = 600;
maxd = 23;
base = 1000000000;
type
arr = array[1..maxd] of integer;
var
a: array[1..maxn,1..maxn] of arr;
res: arr;
n,k: integer;
procedure init;
var
f: text;
begin
assign(f, input);
reset(f);
readln(f, n, k);
close(f);
end;
procedure add(var x,y: arr);
var
i: integer;
begin
for i := 1 to maxd - 1 do
begin
x[i] := x[i] + y[i];
if x[i] > base then
begin
inc(x[i + 1]);
x[i] := x[i] - base;
end;
end;
end;
procedure dp;
var
i,j: integer;
begin
fillchar(a, sizeof(a), 0);
a[1,1,1] := 2;
for i := 2 to n do
begin
for j := 1 to i do add(a[i,1],a[i - 1,j]);
for j := 2 to k do a[i,j] := a[i - 1,j - 1];
end;
end;
procedure printresult;
var
f: text;
i,j,d: integer;
s: string;
begin
assign(f, output);
rewrite(f);
fillchar(res, sizeof(res), 0);
for i := 1 to k do add(res,a[n,i]);
d := maxd;
while res[d] = 0 do dec(d);
write(f, res[d]);
for i := d - 1 downto 1 do
begin
str(res[i],s);
for j := 1 to 9 - length(s) do write(f, 0);
write(f, s);
end;
close(f);
end;
begin
init;
dp;
printresult;
end.