Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function gcd(a, b : Int64) : Int64;
- begin
- if (b = 0) then
- begin
- gcd := 1;
- end
- else
- begin
- if a mod b = 0 then
- begin
- gcd := b;
- end
- else
- gcd := gcd(b mod a, a);
- end;
- end;
- procedure drib(s : AnsiString);
- var
- p, q, a, b, d : Int64;
- i,m,k : integer;
- begin
- m := 0;
- while s[m+3] <> '(' do inc(m);
- k := length(s) - m - 2 - 2;
- a:=0;
- b:=0;
- for i := 3 to (m+2) do a := a*10 + (ord(s[i])-48);
- b := a;
- for i := 3+m+1 to 1+k + m+2 do
- begin
- a := a*10 + (ord(s[i])-48);
- end;
- q := 0;
- for i:= 1 to k do q := q*10+9;
- for i:= 1 to m do q := q*10;
- p := a-b;
- d := gcd(p,q);
- p := p div d;
- q := q div d;
- write(p,'/',q);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement