Thứ Hai, 25 tháng 11, 2019

Bài tập nhập xuất file 1

******************************************************
Gửi bài làm về địa chỉ:
tinhocngoquyen@hotmail.com
*****************************************************

Bài 1: (tanxuat.pas) 

Nhập dãy a gồm n số nguyên
hãy đếm số lần xuất hiện của các phần tử trong dãy:
input: vào từ file tanxuat.inp gồm
-Dòng đầu: chứa số nguyên n (0<n<=1000000)
-Dòng sau: Chứa n số nguyên trong dãy. Các số cách nhau 1 kí tự trắng (0<ai<10000000)
output: Xuất ra file tanxuat.out gồm
-Nhiều dòng mỗi dòng in ra số lần xuất hiện của các phần tử trong dãy. Xem ví dụ để biết cách in
ví dụ:


input
output
8
9 5 9 5 2 5 8 1
1 xua hien 1
2 xuat hien 1
5 xuat hien 3
8 xuat hien 1
9 xuat hien 2

#: Số phần tử khác nhau

Bài 2: chensapxep.pas
Cho dãy a gồm n số nguyên đã được sắp xếp tăng dần. Nhập số nguyên x. Hãy chèn x vào dãy a sao cho dãy a không thay đổi thứ tự đã sắp xếp
input: vào từ file chensapxep.inp gồm
-Dòng đầu: chứa số nguyên n và x (0<n<=1000000)
-Dòng sau: Chứa n số nguyên trong dãy. Các số cách nhau 1 kí tự trắng (0<x, ai<10000000)
output: Xuất ra file chensapxep.out gồm
-Dòng đầu: in dòng chữ: day sau khi chen:
-Dòng sau: là dãy sau khi đã chèn x vào. Xem ví dụ để biết cách in
ví dụ:


input
output
7 12
10 17 18 100 200 300 339
day sau khi chen:
10 12 17 18 100 200 300 339

Bài 3( Đề thi Hsg CM-2018-2019)Con số may mắn (mayman.pas)



Trường THCS XYZ tổ chức giải bóng đá mini mừng Đảng, mừng Xuân 2019. Các lớp trong trường rất hào hứng tham gia giải nên giải bóng đá mini của trường đã thành công tốt đẹp. Tại buổi lễ trao giải có N cầu thủ tham dự, ngoài giải thưởng dành cho các cá nhân và tập thể lớp thì ban tổ chức có tổ chức tặng quà Tết cho các cầu thủ có “số may mắn”. Đầu tiên ban tổ chức yêu cầu các cầu thủ tự tìm cho mình một số cuối cùng dựa trên số áo của mình đang mặc (số cuối cùng được xác định là tổng các chữ số của số đó, sau đó lại tính tổng các chữ số của số mới tạo được cho đến khi chỉ còn một chữ số duy nhất). Sau đó ban tổ chức đưa ra một số nguyên M gọi là số may mắn, cầu thủ có cuối cùng trùng với số may mắn mà ban tổ chức đưa ra sẽ nhận được quà.
Ví dụ: Số áo cầu thủ là 79 thì số cuối cùng được tạo ra là 7 (79 ® 16 ® 7).
Yêu cầu: Viết chương trình đếm số cầu thủ nhận được quà may mắn của ban tổ chức.
Input: Được nhập vào từ file mayman.inp gồm
-Dòng 1: ghi số nguyên dương N là số lượng cầu thủ tham dự (0<N<=500) và số nguyên dương M là số may mắn mà ban tổ chức đưa ra (0<M<10). Hai số cách nhau một kí tự trắng
-N dòng sau mỗi dòng ghi một số nguyên dương tương ứng với số áo của cầu thủ (Mỗi số không vượt quá 10000)
Output: Ghi vào file mayman.out gồm 1 dòng ghi số lượng cầu thủ nhận được quà.
Ví dụ:

mayman.inp
mayman.out
Giải thích
7 3
2
3
8
12
30
18
3
4
Có 7  cầu thủ tham dự, con số may mắn là số 3 nên các cầu thủ mang số áo 3, 12, 30 được quà và số lượng cầu thủ nhận được quà là 4.
 (Do có nhiều đội tham dự nên có thể trùng lặp số áo giữa các cầu thủ tham dự)

Bài 4:Tính toán cơ bản (tinhtoan.pas)
   Cho hai số nguyên và phép tính cần thực hiện. Hãy viết chương trình tính và in ra kết quả của phép tính tương ứng giữa hai số đó
             Nếu là “+” in kết quả là tổng
             Nếu là “-” in kết quả là hiệu
             Nếu là “*” in kết quả là tích
             Nếu là “/” in kết quả là thương
   Dữ liệu vào từ file tinhtoan.inp gồm hai dòng:
             -Dòng 1 ghi hai số nguyên, mỗi số cách nhau một khoảng trắng (giá trị mỗi số <=106)
             -Dòng 2 ghi phép tính cần thực hiện là + hoặc – hoặc * hoặc  /
   Dữ liệu xuất ghi ra file tinhtoan.out gồm: một dòng ghi kết quả phép tính (nếu là phép chia kết quả làm tròn lấy 2 chữ số thập phân)
tinhtoan.inp
tinhtoan.out
8  12
+
20

339  9
/
37.67







   Bài 5:   Xếp gạch XEPGACH (xepgach.pas)

Minh rất thích trò chơi xếp các chiếc hộp có hình viên gạch. Minh đặt các viên gạch chồng lên nhau và xây thành nhiều chồng có độ cao khác nhau. Minh khoe với chị rằng “Chị trông, em đã xây được một bức tường”. Chị Minh trả lời: “Em phải xếp các viên gạch có độ cao giống nhau mới được gọi là một bức tường”. Sau khi nghe chị nó như vậy, nó cân nhắc một tí và cho rằng ý kiến đó là đúng. Vì vậy em bắt đầu tiến hành sắp xếp lại các chồng gạch lần lượt từng chiếc một cho đến khi hoàn thành công việc. Khi công việc đã hoàn tất. Minh mệt lả và muốn có bạn nào giúp Minh di chuyển các viên gạch với số lần ít nhất.
Yêu cầu: đưa ra số lần di chuyển ít nhất của các viên gạch sao cho từ các chồng gạch có độ cao khác nhau trở thành các chồng gạch có độ cao bằng nhau; lần lượt từng viên một cho đến khi hoàn thành công việc.
Dữ liệu vào: xepgach.inp
·       Dòng đầu tiên là số chồng gạch n (1≤ n ≤ 50)
·       Dòng tiếp theo lần lượt là các số nguyên hi, độ cao của chồng gạch thứ i. (1≤ hi ≤ 100, i = 1 .. n).
Dữ liệu ra: xepgach.out
Một số nguyên dương duy nhất là số lần di chuyển các viên gạch ít nhất. Nếu không thể xếp được thì ghi -1
Ví dụ
Input
Output
Giải thích
6
5 2 4 1 7 5
5


Bài 6: Đếm số 0 (so0.pas)



Cho trước 2 số nguyên mn. Hãy đếm số lượng số 0 có trong dãy số nguyên bắt đầu từ m cho đến  n.
Dữ liệu vào: so0.inp gồm 1 dòng chứa 2 số nguyên m và nm ≤ n ≤ 106
Dữ liệu ra: so0.out gồm 1 dòng chứa số lượng số 0 tìm được.
Ví dụ:
Input
Output
100  103
5

Giải thích: 100,101,102,103 có tất cả 5 số 0


Bài 8: SỐ TRÂU (sotrau.pas)
x con trâu, y bó cỏ
Trâu đứng ăn năm, Trâu nằm ăn ba, lụ khụ Trâu già ba con một bó
. Hỏi số Trâu mỗi loại
Dữ liệu vào: sotrau.inp gồm 1 dòng chứa 2 số nguyên x và y(0< x ,y ≤ 106
Dữ liệu ra: sotrau.out ghi 3 số nguyên lần lượt là Trâu đứng, trâu nằm, trâu già. Nếu có nhiều đáp án thì mỗi đáp án trên một dòng, nếu không có nghiệm ghi -1
Ví dụ:
Input
Output
100  100
4, 18 78
8 11 81
12 4 84







Bài 9:Tổng bé nhất SUMMIN

Cho dãy số nguyên a = (a1, a2, ... , an)
Yêu cầu tìm 2 số nguyên liên tiếp trong dãy a: ap, ap+1 có giá trị tuyệt đối của tổng là bé nhất.
Dữ liệu vào: gồm 2 dòng summin.inp
         Dòng 1: Chứa số nguyên N (2 ≤ n ≤ 10000)
         Dòng 2: Chứa n số a1, a2, ... , an  theo đúng thứ tự cách nhau một dấu cách (|ai| ≤ 10000).
Dữ liệu ra: summin.out
         Dòng 1: Ghi tổng tìm được
         Dòng 2: Ghi hai vị trí p và p+1 nhỏ nhất.
ví dụ:

Input
Output
5
2 3 9 -2 3
1
4 5




Bài 10: Ngựa truyền tin HORSE.PAS

Tin tức tình báo thu được cho thấy quân địch sắp mở cuộc tấn công quy mô. Trạm tiền đồn biên giới cử người phóng ngựa về thủ đô báo cáo tình hình và xin tiếp viện. Giữa tram tiền đồn và thủ đô có bố trí N trạm, các trạm ngựa cách đều nhau, ở đó lính cờ (người cầm cờ hiệu đưa tin) có quyền trao đổi ngựa mới trong trạm. Ngựa của trạm i có thể phi tới trạm kế tiếp sau thời gian T[i] giờ. Mỗi con ngựa đều đủ khỏe để có thể đi một mạch tới tận thủ đô.
Yêu cầu: Hãy xác địn khoảng thời gian ngắn nhất tin tức tình báo được đưa về tới thủ đô.
Dữ liệu vào horse.inp
- Dòng đầu là số nguyên N (N ≤ 106)
- Dòng 2 là n số nguyên T[i].
Dữ liệu ra: horse.out gồm 1 dòng duy nhất là giá trị cần tìm

Input
Output
5
2 4 3 1 5
7

Bài 11:Lỗ hổng chữ số LOHONG
Lớp của Bờm tuy không phải là lớp chuyên nhưng phong trào học Toán – Tin rất sôi động. Thầy giáo của Bờm rất tâm huyết, luôn tìm các bài toán hay, mới, lạ, đặc biệt là bài toán quy luật để dạy trò. Một hôm, thầy giáo đến lớp thật sớm trước tiết toán, viết lên bảng một dãy có quy luật sau:
42 à 1,  1337 à 0, 669 à 3, 1882 à 4, 688 à 5, 12345 à 1, 123 à 0, 456 à 2, 789 à 3. Và thầy đố cả lớp rằng: 45678 à ?
Bằng một cái đầu rất nhạy bén Toán Tin, nhất là những bài toán Tin logic, Bờm đã kiếm được lời giải trên … Google ngay khi về đến nhà. Chật vật một hồi, cậu đã tìm ra quy luật của bài toán: chuyển số “lỗ hổng” trong các chữ số của số đã cho và biểu diễn chúng (không có chữ số 0 ở đầu). Chữ số 1, 2, 3, 5 và 7 không có lỗ hổng nào; các chữ số 0, 4, 6, 9 có một “lỗ hổng” và đặc biệt chữ số 8 có đến 2 lỗ hổng. Hôm sau Bờm rất tự tin mở rộng bài toán bằng cách thêm vào một vài số nữa đến đố bạn các lớp bên cạnh. Bạn đọc hãy giúp các bạn ấy giải bài này để Bờm không được dịp “kiêu” nhé.
Dữ liệu vào : -gồm một số nguyên duy nhất n (1 <= n <=1000000)
Dữ liệu ra: In ra màn hình một số nguyên duy nhất là số lỗ hổng của số đã cho


Ví dụ:`

Input
Output
42
1
669
3
456
2
45678
4







Bài 12: Xe điện TRAM

Nước Anh có đúng một đường xe điện. Có n trạm dừng, đánh số từ 1 đến n theo thứ tự di chuyển của xe. Tại trạm thứ iai hành khách xuống xe, sau đó có bi hành khách lên xe. Xe không có ai trước khi nó đến trạm đầu tiên và khi đến trạm cuối cùng tất cả các hành khách đều xuống xe.
Nhiệm vụ của bạn là tính sức chứa tối thiểu của xe để bất cứ thời điểm nào số lượng người bên trong xe không bao giờ vượt quá sức chứa này. Lưu ý rằng ở mỗi trạm dừng tất cả các hành khách trên xe xuống trước rồi các hành khách ở dưới mới lên xe.
Input
·       Dòng đầu tiên chứa một số duy nhất n  - số lượng các trạm dừng của xe điện. (2 ≤ n ≤ 1000)
·       n dòng tiếp theo, mỗi có chứa hai số nguyên aibi (0 ≤ ai, bi ≤ 1000) - số lượng hành khách xuống xe và lên xe tại trạm thứ i.
Theo đề bài ta có a1 = bn = 0. (Trạm đầu không ai xuống, trạm cuối không ai lên  nữa)
Output: In một số nguyên duy nhất biểu thị sức chứa tối thiểu của xe điện.
ví dụ:
Input
Output
4
0 3
2 5
4 2
4 0
6












Bài 13:
Lớp chuyên Tin học  đi tham quan du lịch ở núi  Sơn Tinh. Trong lớp có n học sinh, các học sinh được đánh số thứ tự từ 1 đến n.  Cả lớp quyết định lên đỉnh núi bằng cáp treo nhưng cabin cáp treo chỉ cho phép ngồi tối đa 2 người và tổng cân nặng không vượt quá m. Hỏi có bao nhiêu cách xếp hai học sinh khác nhau vào cabin cáp treo
Input: capin.inp gồm:
Dòng đầu: số nguyên n và m (0<n<500, 0<m<=120)
Dòng sau: là cân nặng của n học sinh trong lớp. số thứ i là cân nặng của bạn thứ i và mỗi số không vượt quá 100
Output: capin.out
-ghi số nguyên là số cách xếp
Ví dụ

input
output
Giải thích
5 100
50 39 75 54  60
3
Có thể xếp bạn 1+2, 2+4, 2+5.


5 nhận xét:

  1. var
    a:array[1..1000]of longint;
    i,x,k,n:longint;
    begin
    write('nhap n=');readln(n);
    for i:=1 to n do
    begin
    write('a[',i,']=');
    readln(a[i]);
    end;
    write('nhap x=');readln(x);
    k:=1;
    for i:=1 to n do
    if (a[i] < x) then
    k:=k+1;
    for i:=n downto k do
    a[i+1]:=a[i];
    a[k]:=x;
    n:=n+1;
    writeln('day so sau khi chen:');
    for i:=1 to n do
    write(a[i],' ');
    readln;
    end.

    Trả lờiXóa
  2. uses crt;
    var a,b:array[1..1000]of longint;
    n,i,j,s,d,m,e,p:longint;
    begin
    readln(n);
    readln(m);
    for i:=1 to n do
    readln(a[i]);
    for i:=1 to n do
    begin
    if (a[i]<10)and(a[i]=m) then d:=d+1;
    if (a[i]>=10) then
    while a[i]<>0 do
    begin
    j:=a[i] mod 10;
    a[i]:=a[i] div 10;
    s:=s+j;
    end;
    if (s=m)and(s<10) then
    begin
    s:=0;
    d:=d+1;
    end
    end;
    writeln(d);
    readln
    end.

    Trả lờiXóa
  3. Tính toán cơ bản (tinhtoan.pas)
    var
    a,b:longint;
    n:string;
    s:real;
    begin
    read(a);
    write(' ');
    readln(b);
    readln(n);
    if n='+' then
    writeln(a+b)
    else
    if n='-' then
    writeln(a-b)
    else
    if n='*' then
    writeln(a*b)
    else
    if n='/' then
    writeln(a/b:0:2)
    else
    writeln('Phep tinh khong hop le');
    readln;
    end.

    Trả lờiXóa