Trong bài toán này, chúng ta được cho ba giá trị A, B và N. Nhiệm vụ của chúng ta là Tìm n số nguyên dương thỏa mãn các phương trình đã cho.
Mô tả sự cố - Ta cần tìm N giá trị dương thỏa mãn cả hai phương trình,
x12 + x22 + … xn2 ≥ A x1 + x2 + … xn ≤ B
In giá trị n nếu có, nếu không thì in -1.
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào
N = 4, A = 65, B = 16
Đầu ra
1 1 1 8
Giải thích
Các phương trình là -
12 + 12 + 12 + 82 = 1 + 1 + 1 + 64 = 67 ≥ 65 1 + 1 + 1 + 8 = 11 < 16
Phương pháp tiếp cận giải pháp
Một giải pháp đơn giản cho vấn đề là tối đa hóa tổng bình phương. Ý tưởng là sử dụng một số làm số chính để tối đa hóa tổng bình phương và sử dụng một số khác là 1. Do đó, sử dụng số này, chúng ta có thể tối đa hóa tổng bình phương và thỏa mãn điều kiện tổng.
Chương trình minh họa hoạt động của giải pháp của chúng tôi,
Ví dụ
#include <bits/stdc++.h> using namespace std; void findNintegers(int N, int A, int B) { vector<int> numbers; for (int i = 0; i < N - 1; i++) numbers.push_back(1); if (B - (N - 1) <= 0) { cout << "-1"; return; } numbers.push_back(B - (N - 1)); int vals = 0; for (int i = 0; i < N; i++) vals += numbers[i] * numbers[i]; if (vals < A) { cout << "-1"; return; } for (int i = 0; i < N; i++) cout << numbers[i] << " "; } int main(){ int N = 4, A = 65, B = 17; cout<<N<<" positive integers that satisfy the given equations are "; findNintegers(N, A, B); return 0; }
Đầu ra
4 positive integers that satisfy the given equations are 1 1 1 14