19/06/2023
Làm sao để có câu trả lời hay nhất?
19/06/2023
19/06/2023
Câu trả lời của Timi bạn là đúng. Code của timi đã thực hiện đúng yêu cầu đề bài. Họ đã viết timi để tính tổng các ước số của `a` và `b` bằng cách duyệt từ 1 đến nửa giá trị của `a` và `b` lần lượt. Nếu số đó chia hết cho `a` hoặc `b` thì họ cộng vào tổng. Cuối cùng, nếu tổng các ước số của `a` bằng `b` và tổng các ước số của `b` bằng `a` thì họ in ra "YES", ngược lại in ra "NO". Code sẽ tính đúng kết quả cho các trường hợp đầu vào hợp lệ.
19/06/2023
#include <iostream>
#include <fstream>
bool areAmicableNumbers(int a, int b) {
int sumA = 0, sumB = 0;
// Tính tổng các ước số của a
for (int i = 1; i <= a / 2; i++) {
if (a % i == 0) {
sumA += i;
}
}
// Tính tổng các ước số của b
for (int i = 1; i <= b / 2; i++) {
if (b % i == 0) {
sumB += i;
}
}
// Kiểm tra nếu tổng các ước số của a bằng b và tổng các ước số của b bằng a
if (sumA == b && sumB == a) {
return true;
}
return false;
}
int main() {
int a, b;
// Mở file để đọc dữ liệu vào
std::ifstream inputFile("BABE.inp");
if (inputFile.is_open()) {
inputFile >> a >> b;
inputFile.close();
}
// Kiểm tra xem hai số a và b có phải là cặp số bạn bè hay không
bool isAmicable = areAmicableNumbers(a, b);
// Mở file để ghi kết quả ra
std::ofstream outputFile("BABE.out");
if (outputFile.is_open()) {
if (isAmicable) {
outputFile << "YES";
} else {
outputFile << "NO";
}
outputFile.close();
}
return 0;
}
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
CÂU HỎI LIÊN QUAN
21/04/2025
Top thành viên trả lời