10.05.2017

Tích số lớn nhất của dãy

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