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.