Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:终于出来了(pascal)

Posted by wy54224 at 2011-01-26 16:00:51 on Problem 3979
In Reply To:终于出来了(pascal) Posted by:wy54224 at 2011-01-26 16:00:20
program poj3979;
var s,s1,s2,ss1,ss2:string;
    x1,x2,y1,y2,jl,code:integer;
function zdgys(a,b:integer):integer;
var ab,i,max:integer;
begin
 if a>b then ab:=a
        else ab:=b;
 max:=1;
 for i:=1 to ab do
  if (a mod i=0)and(b mod i=0)then max:=i;
 zdgys:=max;
end;
procedure init;
var i:integer;
 procedure main;
 var c:char;
     op1,op2,op3,i:integer;
 begin
  op1:=0;op2:=0;op3:=0;
  for i:=1 to length(s)do
  begin
   c:=s[i];
   if c='+'then
   begin
    jl:=1;
    s1:=copy(s,1,i-1);
    delete(s,1,i);
    s2:=s;
    break;
   end;
   if c='-'then
   begin
    jl:=2;
    s1:=copy(s,1,i-1);
    delete(s,1,i);
    s2:=s;
    break;
   end;
  end;
  for i:=1 to length(s1)do
  begin
   c:=s1[i];
   if c='/'then
   begin
    ss1:=copy(s1,1,i-1);
    delete(s1,1,i);
    ss2:=s1;
    val(ss1,x1,code);
    val(ss2,x2,code);
    break;
   end;
  end;
  for i:=1 to length(s2)do
  begin
   c:=s2[i];
   if c='/'then
   begin
    ss1:=copy(s2,1,i-1);
    delete(s2,1,i);
    ss2:=s2;
    val(ss1,y1,code);
    val(ss2,y2,code);
   end;
  end;
  if jl=1 then
  begin
   op1:=x1*y2+x2*y1;
   op2:=x2*y2;
   op3:=zdgys(op1,op2);
   if (op2 div op3<>1)and(op1 div op3<>0)then
   writeln(op1 div op3,'/',op2 div op3)
   else if op2 div op3=1 then writeln(op1 div op3)
   else if op1 div op3=0 then writeln(0);
  end
  else if jl=2 then
  begin
   op1:=x1*y2-x2*y1;
   op2:=x2*y2;
   op3:=zdgys(op1,op2);
   if (op2 div op3<>1)and(op1 div op3<>0)then
   writeln(op1 div op3,'/',op2 div op3)
   else if op2 div op3=1 then writeln(op1 div op3)
   else if op1 div op3=0 then writeln(0);
  end;
 end;
begin
 readln(s);
 while s<>'' do
 begin
  jl:=0;
  main;
  readln(s);
 end;
end;
begin
 init;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator