*Lập trình pascal ạ
Cho trước 1 xâu kí tự gồm các số từ 0 đến 9 và các chữ từ a đến z, trong đó có ít nhất 5 chữ số. Hãy loại bỏ một số kí tự ra khỏi xâu sao cho 5 kí tự cuối cùng còn lại theo đúng thứ tự tạo thành số lớn nhất.
Dữ liệu vào: File văn bản SOMAX.INP gồm một xâu.
Dữ liệu ra: File văn bản SOMAX OUT gồm một số là số lớn nhất gồm 5 chữ số sau khi đã loại bỏ đi các kí tự theo đúng thứ tự.
Quảng cáo
4 câu trả lời 229
Để giải bài toán này trong Pascal, bạn cần phải tìm cách loại bỏ các ký tự sao cho 5 chữ số cuối cùng còn lại tạo thành số lớn nhất. Dưới đây là hướng dẫn chi tiết và mã Pascal để thực hiện:
### Bước 1: Đọc dữ liệu từ file `SOMAX.INP`.
- Mở file và đọc xâu ký tự vào một biến.
### Bước 2: Xử lý chuỗi để tìm số lớn nhất gồm 5 chữ số.
- Bỏ qua các ký tự không phải là chữ số.
- Sử dụng thuật toán chọn lựa tối ưu các chữ số để đảm bảo rằng 5 chữ số cuối cùng tạo thành số lớn nhất.
### Bước 3: Ghi kết quả ra file `SOMAX.OUT`.
### Mã Pascal:
```pascal
program Somax;
const
InputFile = 'SOMAX.INP';
OutputFile = 'SOMAX.OUT';
var
s, result: string;
i, j, n, max_digit, max_index: integer;
begin
// Mở file và đọc dữ liệu vào xâu 's'
assign(input, InputFile);
reset(input);
readln(s);
close(input);
// Bắt đầu xử lý để tìm 5 chữ số lớn nhất
result := '';
n := length(s);
// Chọn 5 chữ số lớn nhất
for i := 1 to 5 do
begin
max_digit := -1;
for j := 1 to n - 5 + i do
begin
if (s[j] in ['0'..'9']) and (Ord(s[j]) > max_digit) then
begin
max_digit := Ord(s[j]);
max_index := j;
end;
end;
result := result + s[max_index];
n := max_index + 1;
s := copy(s, max_index + 1, length(s) - max_index);
end;
// Ghi kết quả vào file SOMAX.OUT
assign(output, OutputFile);
rewrite(output);
writeln(result);
close(output);
end.
```
### Giải thích:
1. **Đọc file**: Chương trình đọc toàn bộ xâu từ file `SOMAX.INP`.
2. **
Để giải bài toán này trong Pascal, bạn cần phải tìm cách loại bỏ các ký tự sao cho 5 chữ số cuối cùng còn lại tạo thành số lớn nhất. Dưới đây là hướng dẫn chi tiết và mã Pascal để thực hiện:
### Bước 1: Đọc dữ liệu từ file SOMAX.INPSOMAX.INP.
- Mở file và đọc xâu ký tự vào một biến.
### Bước 2: Xử lý chuỗi để tìm số lớn nhất gồm 5 chữ số.
- Bỏ qua các ký tự không phải là chữ số.
- Sử dụng thuật toán chọn lựa tối ưu các chữ số để đảm bảo rằng 5 chữ số cuối cùng tạo thành số lớn nhất.
### Bước 3: Ghi kết quả ra file SOMAX.OUTSOMAX.OUT.
### Mã Pascal:
`pascal
program Somax;
const
InputFile = 'SOMAX.INP';
OutputFile = 'SOMAX.OUT';
var
s, result: string;
i, j, n, max_digit, max_index: integer;
begin
// Mở file và đọc dữ liệu vào xâu 's'
assign(input, InputFile);
reset(input);
readln(s);
close(input);
// Bắt đầu xử lý để tìm 5 chữ số lớn nhất
result := '';
n := length(s);
// Chọn 5 chữ số lớn nhất
for i := 1 to 5 do
begin
max_digit := -1;
for j := 1 to n - 5 + i do
begin
if (s[j] in ['0'..'9']) and (Ord(s[j]) > max_digit) then
begin
max_digit := Ord(s[j]);
max_index := j;
end;
end;
result := result + s[max_index];
n := max_index + 1;
s := copy(s, max_index + 1, length(s) - max_index);
end;
// Ghi kết quả vào file SOMAX.OUT
assign(output, OutputFile);
rewrite(output);
writeln(result);
close(output);
end.
Để giải bài toán này trong Pascal, bạn cần phải tìm cách loại bỏ các ký tự sao cho 5 chữ số cuối cùng còn lại tạo thành số lớn nhất. Dưới đây là hướng dẫn chi tiết và mã Pascal để thực hiện:
### Bước 1: Đọc dữ liệu từ file SOMAX.INPSOMAX.INP.
- Mở file và đọc xâu ký tự vào một biến.
### Bước 2: Xử lý chuỗi để tìm số lớn nhất gồm 5 chữ số.
- Bỏ qua các ký tự không phải là chữ số.
- Sử dụng thuật toán chọn lựa tối ưu các chữ số để đảm bảo rằng 5 chữ số cuối cùng tạo thành số lớn nhất.
### Bước 3: Ghi kết quả ra file SOMAX.OUTSOMAX.OUT.
### Mã Pascal:
`pascal
program Somax;
const
InputFile = 'SOMAX.INP';
OutputFile = 'SOMAX.OUT';
var
s, result: string;
i, j, n, max_digit, max_index: integer;
begin
// Mở file và đọc dữ liệu vào xâu 's'
assign(input, InputFile);
reset(input);
readln(s);
close(input);
// Bắt đầu xử lý để tìm 5 chữ số lớn nhất
result := '';
n := length(s);
// Chọn 5 chữ số lớn nhất
for i := 1 to 5 do
begin
max_digit := -1;
for j := 1 to n - 5 + i do
begin
if (s[j] in ['0'..'9']) and (Ord(s[j]) > max_digit) then
begin
max_digit := Ord(s[j]);
max_index := j;
end;
end;
result := result + s[max_index];
n := max_index + 1;
s := copy(s, max_index + 1, length(s) - max_index);
end;
// Ghi kết quả vào file SOMAX.OUT
assign(output, OutputFile);
rewrite(output);
writeln(result);
close(output);
end.
v
ĐỀ KIỂM TRA THÁNG 9
Tên chương trình: pretable.cpp
Kì thi Tin học năm nay có 𝑁 thí sinh tham gia. Ban tổ chức đang cần chuẩn bị bàn cho các thí sinh ngồi
dự thi. Biết mỗi bàn có thể ngồi được tối đa 𝐾 thí sinh.
Yêu cầu: Ban tổ chức cần chuẩn bị tối thiếu bao nhiêu bàn?
Input: Dữ liệu nhập vào từ bàn phím gồm hai dòng:
• Dòng thứ nhất chứa một số tự nhiên 𝑁 là số lượng thí sinh tham gia kì thi.
• Dòng thứ hai chứa một số tự nhiên 𝐾 là số lượng tối đa thí sinh có thể ngồi một bàn.
(𝐾 ≤ 𝑁 ≤ 109).
Output Giải thích
Output: In ra màn hình một số duy nhất là số lượng bàn tối thiểu cần phải chuẩn bị.
Ví dụ:
Input
8
2
Cần chuẩn bị tối thiểu 4 bàn, khi đó mỗi bàn có 2 thí sinh.
4
103
5
21
Cần chuẩn bị tối thiểu 21 bàn, khi đó có thể xếp như sau: có 20 bàn có 5
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
38560 -
Hỏi từ APP VIETJACK27744
