Cho dãy số nguyên dương a[1], a[2],…, a[n]. Tìm trong dãy số trên 5 số mà có tích của chúng lớn nhất.
Dữ liệu vào: Đọc file text có tên MULTI.INP
Dòng 1: Chứa số n (n>4 và n<10000) là số phần tử trong dãy.
Dòng 2: Chứa n số nguyên là các phần tử của dãy.
Kết quả: Ghi ra file text có tên MULTI.OUT
Dòng 1: Chứa tích lớn nhất tìm được.
Dòng 2: Chứa 5 số có tích lớn nhất, đưa ra theo thứ tự tăng dần.
Chú ý: Các số trên cùng 1 hàng trong file input và output cách nhau 1 khoảng trắng.
Giải
const
fi='multi.in';
fo='multi.out';
var
f: text;
i,j,n,tg: integer;
a: array[1..10000] of integer;
t: longint;
begin
t:=1;
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
for i:=1 to n do
for j:=1 to n do
if (a[i]<=a[j]) and(j<>i) then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
assign(f,fo);
rewrite(f);
for i:=n-4 to n do t:=t*a[i];
writeln(f,t);
for i:=n-4 to n do write(f,a[i],' ');
close(f);
end.
No comments:
Post a Comment
Cảm ơn bạn đã nhận xét