Dữ liệu nhập: file DAYSO.INP:
Dòng 1: 2 số N, K giữa 2 số cách nhau 1 khỏang trắng
Dòng 2: Dãy A
Kết quả: file DAYSO.OUT: xuất các số thỏa điều kiện trên, trường hợp không có số nào thỏa thì xuất số -1
Quảng cáo
2 câu trả lời 242
Dưới đây là chương trình C để giải bài toán mà bạn yêu cầu. Chương trình này đọc dữ liệu từ file `DAYSO.INP`, xử lý dữ liệu để tìm các phần tử xuất hiện trong dãy A từ K lần trở lên, và xuất kết quả ra file `DAYSO.OUT`.
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *input = fopen("DAYSO.INP", "r");
FILE *output = fopen("DAYSO.OUT", "w");
if (input == NULL || output == NULL) {
printf("Error opening file.\n");
return 1;
}
int N, K;
fscanf(input, "%d %d", &N, &K);
int A[N];
for (int i = 0; i < N; i++) {
fscanf(input, "%d", &A[i]);
}
fclose(input);
int count[1001] = {0}; // assuming the elements are between 0 and 1000
for (int i = 0; i < N; i++) {
count[A[i]]++;
}
int found = 0;
for (int i = 0; i < 1001; i++) {
if (count[i] >= K) {
fprintf(output, "%d ", i);
found = 1;
}
}
if (!found) {
fprintf(output, "-1");
}
fclose(output);
return 0;
}
```
Dưới đây là hướng dẫn chi tiết về cách thực hiện bài toán này bằng Python:
### Bước 1: Đọc dữ liệu từ file
Chúng ta sẽ đọc từ file `DAYSO.INP`, trong đó:
- Dòng đầu tiên chứa 2 số N và K.
- Dòng thứ hai chứa các số tự nhiên trong dãy A.
### Bước 2: Đếm số lần xuất hiện của mỗi số
Chúng ta có thể sử dụng một dictionary để lưu counts (số lần xuất hiện) của mỗi số trong dãy.
### Bước 3: Xuất ra kết quả
Chúng ta sẽ kiểm tra dictionary và in ra các số có số lần xuất hiện lớn hơn hoặc bằng K. Nếu không có số nào thỏa mãn, ta sẽ in -1.
### Mã nguồn Python
Dưới đây là đoạn mã nguồn hoàn chỉnh:
```python
# Bước 1: Đọc dữ liệu từ file
with open('DAYSO.INP', 'r') as f:
# Dòng 1: N, K
line1 = f.readline().strip()
N, K = map(int, line1.split())
# Dòng 2: Dãy A
line2 = f.readline().strip()
A = list(map(int, line2.split()))
# Bước 2: Đếm số lần xuất hiện
count_map = {}
for number in A:
if number in count_map:
count_map[number] += 1
else:
count_map[number] = 1
# Bước 3: Lấy kết quả
result = []
for number, count in count_map.items():
if count >= K:
result.append(number)
# Xuất ra kết quả
with open('DAYSO.OUT', 'w') as f:
if result:
f.write(' '.join(map(str, result)) + '
')
else:
f.write('-1
')
```
### Giải thích đoạn mã
- **Đọc dữ liệu**: Chúng ta đọc dữ liệu từ file `DAYSO.INP` và tách thành các biến N, K cùng dãy A.
- **Đếm số lần xuất hiện**: Sử dụng dictionary `count_map` để lưu trữ số lần mỗi số xuất hiện.
- **Xuất kết quả**: Kiểm tra xem có số nào thỏa mãn điều kiện hay không và in ra kết quả vào file `DAYSO.OUT`.
### Lưu ý
- Hãy chắc chắn rằng file `DAYSO.INP` được tạo và có dữ liệu đúng định dạng trước khi chạy đoạn mã.
- Kết quả sẽ được ghi vào file `DAYSO.OUT`, bạn phải kiểm tra file này để xem kết quả cuối cùng.
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
38942 -
Hỏi từ APP VIETJACK28255
