BÀI TẬP Ở NHÀ

https://www.baitaponha.com

Lập trình | Câu 1. Đề HSG tin 12 Nghệ An | năm 2013-2014

Câu 1. Lập trình. (Đề thi HSG tin học 12 tỉnh Nghệ An năm 2013-2014)

Đây là câu 1, nên là câu dẽ kiếm điểm của học sinh. Bài này trong thang điểm 20, thì các bạn làm được sẽ được 7 điểm. Bài này năm 2014 nên chỉ yêu cầu viết bằng ngôn ngữ lập trình Pascal, thầy cô và các bạn sẽ tham khảo code Pascal. Ngoài ra trong bài này tôi sẽ viết thêm bằng ngôn ngữ lập trình Python cho quý thầy cô và các bạn tham khảo. Qua bài này ta sẽ thấy được sự lợi hại của Python, chỉ 2 dòng code là giải quyết xong bài này.
Tìm Kiếm min

Đề ra:

Bài 1. (7 điểm) LAPTRINH
            Trong cuộc thi lập trình có N bài thi giải đúng yêu cầu đặt ra. Ban tổ chức quyết định trao phần thưởng đặc biệt cho bài thi tốt nhất, đó là bài thi có thời gian chạy chương trình ít nhất. Cho biết bài thi thứ i (1< i < N) có thời gian chạy là một số nguyên ai (tính theo đơn vị centisecond, 1centisecond = 1/100 giây).
Yêu cầu: Hãy cho biết thời gian của bài thi được trao thưởng và có bao nhiêu bài thi được trao thưởng.
Dữ liệu: Vào từ file văn bản LAPTRINH.INP
- Dòng 1 chứa số nguyên dương N (N < 100).
- Dòng 2 chứa N số nguyên a1, ..., an (0 < ai < 100).
Kết quả: Ghi ra file văn bản LAPTRINH.OUT
- Dòng thứ nhất chứa một số nguyên là thời gian ít nhất tìm được
- Dòng thứ hai chứa một số nguyên là số bài thi cùng đạt thời gian ít nhất.
Ví dụ.
LAPTRINH.INP LAPTRINH.OUT
5
10 8 12 8 11		 8
2

Giải thích test ví dụ: thời gian ít nhất là 8 và có 2 bài cùng thời gian đó.

Solution

  - Tìm số nhỏ nhất trong dãy đã cho
  - Đếm xem trong dãy có bao nhiêu phần tử nhỏ nhất.

Code mẫu bằng Pascal

Const   fi      =       'Laptrinh.inp';
        fo      =       'Laptrinh.out';
var     a       :       Array[1..100] of Integer;
        i, j, n :       byte;
        f, g    :       Text;
        Min     :       Integer;
Procedure     Mofile;
begin
     Assign(f, fi);
     reset(f);
     Assign(g, fo);
     Rewrite(g);
end;
Procedure       dong;
Begin
     Close(f);
     Close(g);
end;
Procedure       Doc;
Begin
     readln(f, n);
     Min := 100;
     for i:=1 to n do
         begin read(f, a[i]);
               if a[i] < min then min := a[i];
         end;
end;
Procedure       Xuly;
Begin
     j := 0;
     For i := 1 to n do
         if min = a[i] then inc(j);
end;
Procedure       Xuat;
Begin
     Writeln(g, min);
     writeln(g, j)
end;
Begin
     Mofile;
     Doc;
     Xuly;
     xuat;
     Dong;
End.

Code mẫu bằng Python

Cách làm: Đầu tiên, chúng ta đọc dữ liệu vào từ file văn bản bằng cách sử dụng hàm open()readline(). Sau đó, tìm thời gian ít nhất bằng cách sử dụng hàm min(). Cuối cùng, ta đếm số bài thi đạt được thời gian ít nhất bằng cách sử dụng hàm count() và ghi kết quả ra file văn bản bằng cách sử dụng hàm write(). 
# Đọc dữ liệu vào từ file văn bản
with open('LAPTRINH.INP', 'r') as f:
  n = int(f.readline())
  times = list(map(int, f.readline().split()))

# Tìm thời gian ít nhất
min_time = min(times)

# Đếm số bài thi đạt được thời gian ít nhất
count = times.count(min_time)

# Ghi kết quả ra file văn bản
with open('LAPTRINH.OUT', 'w') as f:
  f.write(str(min_time) + '\n')
  f.write(str(count))

Thảo luận

Bài này dễ nên tôi không đưa các test lên nhé. 

Để nắm được thông tin cập nhật mới cũng như phản hồi về trang, các bạn tham gia nhóm facebook:

Nhóm facebook: f / BAITAPONHA
 

Tác giả: admin

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây