06/03/2024
06/03/2024
06/03/2024
Giải thuật:
Để tìm cách phân tích số nguyên dương n thành tích của hai số nguyên dương x và y sao cho tổng x + y nhỏ nhất, ta có thể sử dụng thuật toán sau:
Khởi tạo:
x = 1
y = n
min_sum = x + y
Lặp lại:
Tăng x lên 1.
Tính y = n / x.
Nếu x <= y và x + y < min_sum:
Cập nhật min_sum = x + y.
Lưu lại giá trị x và y hiện tại.
Kết thúc:
Sau khi lặp lại cho đến khi x > y, ta sẽ tìm được giá trị x và y tối ưu.
Code C++:
C++
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n;
long long min_sum = n + 1;
long long x, y;
for (x = 1; x <= n; ++x) {
y = n / x;
if (x <= y && x + y < min_sum) {
min_sum = x + y;
y = n / x;
}
}
cout << x << " " << y << endl;
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
Top thành viên trả lời