giải bài này C++

rotate image
ADS
thumb up 0
thumb down
Trả lời câu hỏi của Huế Nguyễn

Làm sao để có câu trả lời hay nhất?

  • Luôn có GIẢI THÍCH các bước giải
  • Không copy câu trả lời của Timi
  • Không sao chép trên mạng
  • Không spam câu trả lời để nhận điểm
  • Spam sẽ bị khóa tài khoản
ADS
CÂU TRẢ LỜI
avatar
Timi

18/03/2025

Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để giải bài toán này, chúng ta cần thực hiện các bước sau: 1. **Tìm tất cả các ước nguyên dương của số N**. 2. **Kiểm tra từng ước xem nó có chia hết cho ít nhất hai trong ba số A, B, C hay không**. 3. **Đếm số lượng các ước thỏa mãn điều kiện trên**. Dưới đây là mã C++ để thực hiện các bước trên: ```cpp #include <iostream> #include using namespace std; // Hàm để tìm tất cả các ước nguyên dương của N vector<long> findDivisors(long long N) { vector<long> divisors; for (long long i = 1; i * i <= N; ++i) { if (N % i == 0) { divisors.push_back(i); if (i != N / i) { divisors.push_back(N / i); } } } return divisors; } // Hàm để đếm số lượng ước chia hết cho ít nhất hai trong ba số A, B, C int countDivisors(long long N, long long A, long long B, long long C) { vector<long> divisors = findDivisors(N); int count = 0; for (long long d : divisors) { int divisibleCount = 0; if (d % A == 0) divisibleCount++; if (d % B == 0) divisibleCount++; if (d % C == 0) divisibleCount++; if (divisibleCount >= 2) { count++; } } return count; } int main() { long long N, A, B, C; cin >> N >> A >> B >> C; int result = countDivisors(N, A, B, C); cout << result << endl; return 0; } ``` ### Giải thích mã: 1. **Hàm `findDivisors`**: Tìm tất cả các ước của N bằng cách lặp từ 1 đến căn bậc hai của N. Nếu i là ước của N, thì N/i cũng là ước. 2. **Hàm `countDivisors`**: Sử dụng hàm `findDivisors` để lấy danh sách các ước. Sau đó, kiểm tra từng ước xem nó có chia hết cho ít nhất hai trong ba số A, B, C hay không. 3. **Hàm `main`**: Nhập vào các số N, A, B, C và gọi hàm `countDivisors` để in ra kết quả. ### Lưu ý: - Đảm bảo rằng bạn đã kiểm tra các điều kiện đầu vào để tránh tràn số khi làm việc với các số lớn (đến 10^18). - Mã này có thể chạy chậm với N lớn, nhưng nó sẽ hoạt động tốt cho các giá trị nhỏ hơn. Đối với N lớn, bạn có thể cần tối ưu hóa thêm.
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
level icon
Bảo

18/03/2025

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
ADS
avatar
level icon
seokaido

18/03/2025

```cpp
#include <iostream>
#include <vector>

using namespace std;

// Hàm để tìm tất cả các ước nguyên dương của N
vector<long long> findDivisors(long long N) {
vector<long long> divisors;
for (long long i = 1; i * i <= N; ++i) {
if (N % i == 0) {
divisors.push_back(i);
if (i != N / i) {
divisors.push_back(N / i);
}
}
}
return divisors;
}

// Hàm để đếm số lượng ước chia hết cho ít nhất hai trong ba số A, B, C
int countDivisors(long long N, long long A, long long B, long long C) {
vector<long long> divisors = findDivisors(N);
int count = 0;

for (long long d : divisors) {
int divisibleCount = 0;
if (d % A == 0) divisibleCount++;
if (d % B == 0) divisibleCount++;
if (d % C == 0) divisibleCount++;

if (divisibleCount >= 2) {
count++;
}
}

return count;
}

int main() {
long long N, A, B, C;
cin >> N >> A >> B >> C;

int result = countDivisors(N, A, B, C);
cout << result << endl;

return 0;
}
```
 

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
Đình Hải

18/03/2025

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 1
thumb down
0 bình luận
Bình luận

Nếu bạn muốn hỏi bài tập

Các câu hỏi của bạn luôn được giải đáp dưới 10 phút

Ảnh ads

CÂU HỎI LIÊN QUAN

logo footer
FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019 Email: info@fqa.vn
Location Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Ô Chợ Dừa, Quận Đống Đa, Thành phố Hà Nội, Việt Nam.
Tải ứng dụng FQA
app store ch play
Người chịu trách nhiệm quản lý nội dung: Nguyễn Tuấn Quang Giấy phép thiết lập MXH số 07/GP-BTTTT do Bộ Thông tin và Truyền thông cấp ngày 05/01/2024
Copyright © 2023 fqa.vn All Rights Reserved
gift-box
survey
survey
Đặt câu hỏi