Nhập vào dãy gồm n phân số; trong đó tử số và mẫu số của mỗi phân số là các số nguyên dương.(dùng mảng 1 chiều để làm) a. Hãy tính tổng các phân số của dãy; kết quả là một phân số tối giản. b. Đếm xem có bao nhiêu phân số không phải là phân số tối giản. c. Tìm phân số có giá trị lớn nhất của mảng.

1 câu trả lời

*Lưu ý: khi nhập không nhập dấu '/'

uses crt;
var t_a,t_b,m_a,m_b,t:longword;
    i,n,dem:longword;
    a,b:array[1..100000] of longword;
function ucln(a,b:longword):longword;
begin
    while a<>b do
       if a>b then dec(a,b)
         else dec(b,a);
    exit(a);
end;
procedure cong(a,b:longword);
begin
    t_a:=b*t_a+a*t_b;
    t_b:=t_b*b;
end;
begin
    clrscr;
    readln(n);
    t_a:=0;
    t_b:=1;
    m_a:=0;
    m_b:=1;
    dem:=0;
    for i:=1 to n do
       begin
           readln(a[i],b[i]);
           cong(a[i],b[i]);
           if ucln(a[i],b[i])<>1 then inc(dem);
           if a[i]/b[i]>m_a/m_b then
              begin
                  m_a:=a[i];
                  m_b:=b[i];
              end;
       end;
    t:=ucln(t_a,t_b);
    t_a:=t_a div t;
    t_b:=t_b div t;
    writeln('Tong: ',t_a,'/',t_b);
    writeln('Co ',dem,' phan so khong phai la so toi gian');
    writeln('Phan so lon nhat: ',m_a,'/',m_b);
readln;
end.

Câu hỏi trong lớp Xem thêm