usaco 3.2 ratios 2008.7.20

来源:互联网 发布:jpeg量化矩阵 编辑:程序博客网 时间:2024/05/22 06:32

usaco 3.2 ratios 2008.7.20

 

{

ID:

PROG:ratios

LANG:PASCAL

}

program p_radios;  const fin='ratios.in';fout='ratios.out';  var x,y,z:array[1..3]of longint;      flag,k,a,b,c,i,j,p,n1,n2,n3:longint;      f1,f2:text; function max(x1,x2,x3:longint):longint; begin   if x1<x2 then max:=x1 else max:=x2;   if x3<max then max:=x3;   end; function deal(k:longint):longint;  var ka,kb,kc:longint;       w:array[1..9]of longint;  begin    ka:=k*a;kb:=k*b;kc:=k*c;    if x[1]<>0 then w[1]:=ka div x[1] else w[1]:=200;    if y[1]<>0 then w[2]:=kb div y[1] else w[2]:=200;    if z[1]<>0 then w[3]:=kc div z[1] else w[3]:=200;    if x[2]<>0 then w[4]:=ka div x[2] else w[4]:=200;    if y[2]<>0 then w[5]:=kb div y[2] else w[5]:=200;    if z[2]<>0 then w[6]:=kc div z[2] else w[6]:=200;    if x[3]<>0 then w[7]:=ka div x[3] else w[7]:=200;    if y[3]<>0 then w[8]:=kb div y[3] else w[8]:=200;    if z[3]<>0 then w[9]:=kc div z[3] else w[9]:=200;    n1:=max(w[1],w[2],w[3]);    n2:=max(w[4],w[5],w[6]);    n3:=max(w[7],w[8],w[9]);    if (n1>100)and(n2>100)and(n3>100) then exit(2);    for i:=0 to n1 do      for j:=0 to n2 do        for p:=0 to n3 do          if (i*x[1]+j*x[2]+p*x[3]=ka)and (i*y[1]+j*y[2]+p*y[3]=kb)             and (i*z[1]+j*z[2]+p*z[3]=kc)then exit(1);  end;  begin    assign(f1,fin);reset(f1);assign(f2,fout);rewrite(f2);    read(f1,a,b,c);    for i:=1 to 3 do read(f1,x[i],y[i],z[i]);    flag:=0;k:=0;    repeat      inc(k);flag:=deal(k);    until flag>0;    case flag of      1:writeln(f2,i,' ',j,' ',p,' ',k);      2:writeln(f2,'NONE');      end;    close(f1);    close(f2);  end.


0 0
原创粉丝点击