fracdec.pas

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

PAS
61
字号
{
ID:maigoak1
PROG:fracdec
}

program fracdec;
const
  max=100000;
var
  fin,fout:text;
  digit:array[1..max]of 0..9;
  hash:array[0..max]of -1..max;
  n,d,dg,i:longint;
  s:string;
procedure add(c:char);
  begin
    s:=s+c;
    if length(s)=76 then begin
      writeln(fout,s);
      s:='';
    end;
  end;
begin
  assign(fin,'fracdec.in');
  reset(fin);
  readln(fin,n,d);
  close(fin);
  assign(fout,'fracdec.out');
  rewrite(fout);

  for i:=0 to d do
    hash[i]:=-1;
  i:=n div d;
  str(i,s);
  s:=s+'.';
  n:=n mod d;
  hash[n]:=0;
  dg:=0;
  repeat
    inc(dg);
    n:=n*10;
    digit[dg]:=n div d;
    n:=n mod d;
    if hash[n]>-1 then break else hash[n]:=dg;
  until n=0;

  if n=0 then
    for i:=1 to dg do
      add(chr(48+digit[i]))
  else begin
    for i:=1 to hash[n] do
      add(chr(48+digit[i]));
    add('(');
    for i:=hash[n]+1 to dg do
      add(chr(48+digit[i]));
    add(')');
  end;
  if s<>'' then writeln(fout,s);
  close(fout);
end.

⌨️ 快捷键说明

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