您的位置:首页 > 移动开发 > IOS开发

usaco 3.2 ratios 2008.7.20

2016-02-05 11:22 621 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: