usaco 3.2 ratios 2008.7.20

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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值