Paste Search Dynamic
Recent pastes
product quotient
  1. var a,b:string;
  2.  
  3.  function cmp(a,b:string):byte;
  4.   var i:byte;
  5.    begin
  6.     if length(a)>length(b) then exit(1);
  7.     if length(a)<length(b) then exit(3);
  8.     if a=b then exit(2);
  9.     for i:=1 to length(a) do if a[i]>b[i] then exit(1) else
  10.                              if b[i]>a[i] then exit(3);
  11.    end;
  12.  
  13.  function sum(a,b:string):string;
  14.   var x,y,s,t,i:byte;
  15.       k:string;
  16.    begin
  17.     t:=0;k:='';
  18.     while length(a)<length(b) do a:='0'+a;
  19.     while length(b)<length(a) do b:='0'+b;
  20.     for i:=length(a) downto 1 do begin
  21.                      x:=ord(a[i])-48;
  22.                      y:=ord(b[i])-48;
  23.                      s:=x+y+t;
  24.                      t:=s div 10;
  25.                      k:=chr((s mod 10) + 48) + k;
  26.                                  end;
  27.     if t>0 then k:='1'+k;
  28.     sum:=k;
  29.    end;
  30.  
  31.  function difference(a,b:string):string;
  32.   var x,y,s,t,i:integer;
  33.       k:string;
  34.    begin
  35.     t:=0;k:='';
  36.     while length(a)<length(b) do a:='0'+a;
  37.     while length(b)<length(a) do b:='0'+b;
  38.     for i:=length(a) downto 1 do begin
  39.                      x:=ord(a[i])-48;
  40.                      y:=ord(b[i])-48;
  41.                      s:=x-y-t;
  42.                      if s<0 then begin s:=s+10;t:=1 end
  43.                             else t:=0;
  44.                      k:=chr(s + 48) + k;
  45.                                  end;
  46.     while (length(k)>1) and (k[1]='0') do delete(k,1,1);                
  47.     difference:=k;
  48.    end;
  49.  
  50.  function product1(a,b:string):string;
  51.   var x,y,s,t,i:byte;
  52.       k:string;
  53.    begin
  54.     t:=0;k:='';
  55.     y:=ord(b[1])-48;
  56.     for i:=length(a) downto 1 do begin
  57.                      x:=ord(a[i])-48;
  58.                      s:=x*y+t;
  59.                      t:=s div 10;
  60.                      k:=chr((s mod 10) + 48) + k;
  61.                                  end;
  62.     if t>0 then k:=chr(t+48)+k;
  63.     product1:=k;
  64.    end;
  65.  
  66.  function product(a,b:string):string;
  67.   var x,y,i:integer;
  68.       k,t,o:string;
  69.    begin
  70.     k:='';t:='';o:='';
  71.     for i:=length(b) downto 1 do begin
  72.               t:=product1(a,b[i]);t:=t+o;
  73.               k:=sum(k,t);
  74.               o:=o+'0';
  75.                                  end;
  76.     product:=k;                          
  77.    end;
  78.  function quotient(a,b:string):string;
  79.   var i,d:longint;
  80.       k,t:string;
  81.       dt:array [0..10] of string;
  82.    begin  
  83.     dt[0]:='0';
  84.     for i:=1 to 10 do dt[i]:=sum(dt[i-1],b);
  85.     k:='';t:='';
  86.     for i:=1 to length(a) do begin
  87.      d:=1;
  88.      while cmp(t+a[i],dt[d])<3 do d:=d+1;
  89.      k:=k+chr(d-1+48);
  90.      t:=difference(t+a[i],dt[d-1]);
  91.                              end;
  92.     while (length(k)>1) and (k[1]='0') do delete(k,1,1);        
  93.     quotient:=k;
  94.    end;
  95.  
  96.  
  97.    begin
  98.     readln(a);readln(b);
  99.     writeln(sum(a,b));
  100.     writeln(difference(a,b));
  101.     writeln(product(a,b));
  102.     writeln(quotient(a,b));
  103.     write(ord(':')-48);
  104.    end.
Parsed in 0.017 seconds