Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 0.72 KB | None | 0 0
  1. function gcd(a, b : Int64) : Int64;
  2. begin
  3.   if (b = 0) then
  4.   begin
  5.     gcd := 1;
  6.   end
  7.   else
  8.   begin
  9.     if a mod b = 0 then
  10.     begin
  11.       gcd := b;
  12.     end  
  13.     else
  14.       gcd := gcd(b mod a, a);
  15.   end;
  16. end;
  17.  
  18.  
  19. procedure drib(s : AnsiString);
  20. var
  21.   p, q, a, b, d : Int64;
  22.   i,m,k : integer;
  23. begin
  24.   m := 0;
  25.   while s[m+3] <> '(' do inc(m);
  26.   k := length(s) - m - 2 - 2;
  27.   a:=0;
  28.   b:=0;
  29.   for i := 3 to (m+2) do a := a*10 + (ord(s[i])-48);
  30.   b := a;
  31.   for i := 3+m+1 to 1+k + m+2 do
  32.   begin
  33.     a := a*10 + (ord(s[i])-48);
  34.   end;
  35.   q := 0;
  36.   for i:= 1 to k do q := q*10+9;
  37.   for i:= 1 to m do q := q*10;
  38.   p := a-b;
  39.   d := gcd(p,q);
  40.   p := p div d;
  41.   q := q div d;
  42.   write(p,'/',q);
  43. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement