Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.01 KB | None | 0 0
  1. var a, a_t, b, bb, x, y, pow : uint64; b_2, a_2 : string; i : integer;
  2.  
  3. procedure to_bin;
  4. begin
  5.   b_2:='';
  6.   if b = 0 then
  7.     b_2:='0';
  8.   while b>0 do
  9.     begin
  10.       if b mod 2 = 1 then
  11.         b_2 := '1' + b_2
  12.       else
  13.         b_2 := '0' + b_2;
  14.       b := b div 2;
  15.     end;
  16.   //////////////////////////////
  17.     while Length(b_2) <> 64 do
  18.         b_2 := '0'+b_2;
  19. end;
  20.  
  21. begin
  22.   readln(a);
  23.   readln(b);
  24.   a_t := a;
  25.   to_bin;
  26.  
  27.   pow:=9223372036854775808;
  28. I := 1;
  29.   While pow<>0 do
  30.     begin
  31.       if (b_2[i] = '1')and(pow<=a_t) then
  32.         begin
  33.           y := y+pow;
  34.           a_t := a_t-pow;
  35.         end
  36.       else if (pow  <> 9223372036854775808 ) then // шоб не вылезло из 64 бит
  37.       if pow*2<=a_t then
  38.         begin
  39.           x := x+pow;
  40.           y := y+pow;
  41.           a_t := a_t-pow*2;
  42.         end;
  43.      //Writeln(x, ' ', y, ' ',pow);
  44.       pow := pow div 2;
  45.       Inc(i);
  46.     end;
  47.  
  48.   if x+y = a then
  49.     write(x,' ',y)
  50.   else
  51.     write(-1);
  52.   readln;
  53. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement