-
-
-
- Lớp 2
- Tự nhiên và xã hội
- Tiếng việt
- Toán học
- Tiếng Anh
- Đạo đức
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 4
- Khoa học
- Tiếng việt
- Toán học
- Đạo đức
- Tiếng Anh
- Lịch sử và Địa lí
- Công nghệ
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 5
- Khoa học
- Toán học
- Tiếng việt
- Tin học
- Tiếng Anh
- Đạo đức
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- Lớp 6
- Công nghệ
- Tin học
- Lịch sử và Địa lí
- GDCD
- Ngữ văn
- Toán học
- Khoa học tự nhiên
- Tiếng Anh
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 7
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Lịch sử và Địa lí
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Âm nhạc
- Lớp 8
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Ngữ văn
- Khoa học tự nhiên
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 9
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Lịch sử và Địa lí
- Lớp 10
- Hóa học
- Tiếng Anh
- Lịch sử
- Sinh học
- Địa lí
- Vật lí
- Tin học
- Toán học
- GD kinh tế và pháp luật
- Công nghệ
- Ngữ văn
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- GD Quốc phòng và An ninh
- Lớp 11
- Hóa học
- Tiếng Anh
- Vật lí
- Tin học
- Toán học
- Địa lí
- Công nghệ
- Lịch sử
- Ngữ văn
- Sinh học
- GD Thể chất
- GD Quốc phòng và An ninh
- GD kinh tế và pháp luật
- HĐ trải nghiệm, hướng nghiệp
-
-
- KHÁM PHÁ
-
-
-
-
-
-
-
-
- FAVORITES
-
- Hỏi đáp
- Tin Học
- Lớp 8
- SỐ SPECIAL Xét một dãy gồm N số nguyên A1, A2, A3, ... AN. Trong dãy số trên có 1 số chỉ xuất hiện đúng một lần (gọi là số special), và các số còn lại xuất hiện một số chẵn lần. Yêu cầu: Hãy tìm số special của một
SỐ SPECIAL Xét một dãy gồm N số nguyên A1, A2, A3, ... AN. Trong dãy số trên có 1 số chỉ xuất hiện đúng một lần (gọi là số special), và các số còn lại xuất hiện một số chẵn lần. Yêu cầu: Hãy tìm số special của một
SỐ SPECIAL Xét một dãy gồm N số nguyên A1, A2, A3, ... AN. Trong dãy số trên có 1 số chỉ xuất hiện đúng một lần (gọi là số special), và các số còn lại xuất hiện một số chẵn lần. Yêu cầu: Hãy tìm số special của một dãy cho trước. Dữ liệu: Trong file văn bản SPECIAL.INP gồm: - Dòng đầu tiên là số N (N 107) - Dòng tiếp theo gồm N số nguyên, số thứ i là Ai với |Ai| 109. Kết quả: Ghi ra file văn bản SPECIAL.OUT gồm: Một dòng duy nhất là số cần tìm. Ví dụ: SPECIAL.INP 7 2 3 8 6 3 2 6
SPECIAL.OUT 8
***Lập trình C++
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
```cpp
#include
#include
#include
using namespace std;
int main() {
// Khai báo các biến cần thiết
ifstream fin("SPECIAL.INP");
ofstream fout("SPECIAL.OUT");
int N;
fin >> N; // Đọc số lượng phần tử N
unordered_map frequency; // Sử dụng unordered_map để đếm tần số xuất hiện của từng số
// Đọc dãy số và đếm tần số
for (int i = 0; i < N; i++) {
int num;
fin >> num;
frequency[num]++; // Tăng tần số của số này lên 1
}
// Tìm số special, tức là số xuất hiện một lần
for (const auto& pair : frequency) {
if (pair.second == 1) { // Nếu tần số bằng 1
fout << pair.first << endl; // Ghi số đó vào file
break; // Kết thúc sau khi tìm thấy số special
}
}
// Đóng các file
fin.close();
fout.close();
return 0;
}
```
Giải thích:
- Đầu tiên, chúng ta sử dụng `ifstream` để đọc dữ liệu từ file `SPECIAL.INP` và `ofstream` để ghi kết quả vào file `SPECIAL.OUT`.
- Số lượng phần tử được lưu vào biến `N` và chúng ta sử dụng `unordered_map` để đếm số lần xuất hiện của từng số.
- Trong vòng lặp, chúng ta đọc từng số và tăng tần số của nó trong `unordered_map`.
- Sau khi đã đếm xong tần số, chúng ta sử dụng vòng lặp để duyệt qua `unordered_map` và tìm số nào có tần số bằng 1, tức là số special.
- Khi tìm thấy số special đầu tiên, chúng ta ghi nó vào file và dừng vòng lặp.
- Cuối cùng, chúng ta đóng các file để hoàn tất chương trình.
Chương trình này có độ phức tạp thời gian là O(N), giúp xử lý hiệu quả ngay cả với N lên đến 10^7.
#include
#include
#include
using namespace std;
int main() {
// Khai báo các biến cần thiết
ifstream fin("SPECIAL.INP");
ofstream fout("SPECIAL.OUT");
int N;
fin >> N; // Đọc số lượng phần tử N
unordered_map
// Đọc dãy số và đếm tần số
for (int i = 0; i < N; i++) {
int num;
fin >> num;
frequency[num]++; // Tăng tần số của số này lên 1
}
// Tìm số special, tức là số xuất hiện một lần
for (const auto& pair : frequency) {
if (pair.second == 1) { // Nếu tần số bằng 1
fout << pair.first << endl; // Ghi số đó vào file
break; // Kết thúc sau khi tìm thấy số special
}
}
// Đóng các file
fin.close();
fout.close();
return 0;
}
```
Giải thích:
- Đầu tiên, chúng ta sử dụng `ifstream` để đọc dữ liệu từ file `SPECIAL.INP` và `ofstream` để ghi kết quả vào file `SPECIAL.OUT`.
- Số lượng phần tử được lưu vào biến `N` và chúng ta sử dụng `unordered_map` để đếm số lần xuất hiện của từng số.
- Trong vòng lặp, chúng ta đọc từng số và tăng tần số của nó trong `unordered_map`.
- Sau khi đã đếm xong tần số, chúng ta sử dụng vòng lặp để duyệt qua `unordered_map` và tìm số nào có tần số bằng 1, tức là số special.
- Khi tìm thấy số special đầu tiên, chúng ta ghi nó vào file và dừng vòng lặp.
- Cuối cùng, chúng ta đóng các file để hoàn tất chương trình.
Chương trình này có độ phức tạp thời gian là O(N), giúp xử lý hiệu quả ngay cả với N lên đến 10^7.
Đăng phản hồi
© 2025 Học Tốt Online - Chia Sẻ Tài Liệu Học Tập và Giải Bài Tập Miễn Phí
Vietnamese
