kimbits.pas

来自「Magio牛的usaco源代码」· PAS 代码 · 共 47 行

PAS
47
字号
{
ID:maigoak1
PROG:kimbits
}

program kimbits;
const
  maxn=31;
var
  fin,fout:text;
  s:array[0..maxn-1,0..maxn-1]of int64;
    {s[x,y] means the number of x-bit strings with at most y 1s}
  n,l,j,k:integer;
  i:int64;
begin
  assign(fin,'kimbits.in');
  reset(fin);
  readln(fin,n,l,i);
  close(fin);
  assign(fout,'kimbits.out');
  rewrite(fout);

  {Calculate the array s}
  s[0,0]:=1;
  for j:=1 to n-1 do begin
    s[j,0]:=1;
    for k:=1 to j-1 do
      s[j,k]:=s[j-1,k]+s[j-1,k-1];
    s[j,j]:=s[j-1,j-1]*2;
  end;

  {Find the string}
  for j:=n-1 downto 0 do begin
    if l>j then l:=j;
    if i>s[j,l] then begin
      write(fout,1);
      i:=i-s[j,l];
      dec(l);
    end
    else
      write(fout,0);
  end;

  writeln(fout);
  close(fout);
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?