Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Max Alekseyev                        2:5015/60      12 Nov 2002  15:25:04
 To : Anton Kuznetsov
 Subject : Котлы
 -------------------------------------------------------------------------------- 
 
 
 Replying to a message of Anton Kuznetsov to All:
 
  AK>  Дано N котлов размерами А1, А2, А3... Аn литров + есть бесконечный
  AK> котел с водой. Из большого котла можно зачерпывать котлы только
  AK> целиком, а вокогда переливают воду из котла Ai в Aj, то продолжается
  AK> это до тех пор пока во втором котле есть куда воду пихать и пока есть
  AK> откуда воду брать...
 
  AK>  Вообщем вопрос такой можно ли набрать M литров?
 
 Вот решение для двух котлов:
 
 ===cut===
 var n,m,k,x,u,v:longint;
     a,a2,b,b2,t:longint;
     j1,j2:char;
 
 begin
 write('Input A B M = '); readln(n,m,k);
 v:=m; x:=n; a:=1; a2:=0; b:=0; b2:=1;
 repeat
   u:=x; t:=v div x; x:=v mod x; v:=u;
   u:=a2; a2:=a-t*a2; a:=u;
   u:=b2; b2:=b-t*b2; b:=u;
 until x=0;
 { we got v = gcd(n,m) = a*m + b*n }
 if k mod v<>0 then
 begin
   writeln('Impossible!');
   halt;
 end;
 a:=a*k div v; b:=b*k div v;
 if a<0 then
 begin
   t:=(abs(a)+n-1) div n; inc(a,t*n); dec(b,t*m);
 end;
 t:=a div n; dec(a,t*n); inc(b,t*m);
 if abs(a)+abs(b)<=(n+m) shr 1 then
 begin
   j1:='A'; j2:='B';
 end else
 begin
   j1:='B'; j2:='A';
   u:=m; m:=n; n:=u;
 end;
 
 v:=0;
 repeat
   writeln('Fill up jug ',j2);
   u:=m;
   repeat
     writeln('Pour water from jug ',j2,' into jug ',j1);
     if u+v>n then begin dec(u,n-v); v:=n end
              else begin inc(v,u); u:=0 end;
     if u=k then
     begin
       writeln('Well done! There are exactly ',k,' liters in jug B.');
       halt;
     end;
     if v=n then
     begin
       writeln('Empty jug ',j1);
       v:=0;
     end;
   until u=0;
 until 0<>0;
 
 end.
 ===cut===
 
 Regards,      ш.ш
         Max    ~
 
 --- FleetStreet 1.27.3.8
  * Origin:  (2:5015/60)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Котлы   Anton Kuznetsov   12 Nov 2002 23:09:00 
 Котлы   Max Alekseyev   12 Nov 2002 15:25:04 
 Re: Котлы   Andrew Starsh   13 Nov 2002 09:34:44 
 Re: Котлы   Andrew Starsh   13 Nov 2002 15:33:09 
 Котлы   Anton Kuznetsov   13 Nov 2002 18:32:00 
 Re: Котлы   Andrew Starsh   20 Nov 2002 03:52:22 
 Re: Котлы   Grebnov Ilya   13 Nov 2002 14:18:28 
 Re: Котлы   Sergey Bychkov   17 Nov 2002 04:36:30 
 Котлы   Sergey Kuznetsov   18 Nov 2002 02:00:00 
 Re: Котлы   Andrew Starsh   20 Nov 2002 03:56:20 
 Котлы   Anton Kuznetsov   21 Nov 2002 00:40:00 
Архивное /ru.algorithms/18133dd10fbf.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional