在C++中查找具有给定乘积和之差的N个整数
假设我们有两个整数N和D。我们必须找到一组N个整数,它们的和与积的差等于D。假设N = 3,D = 5,则输出将是1、2、8。这里的和是1 + 2 + 8 = 11,积是1 * 2 * 8 = 16,16和11的差是5。
我们必须解决这个问题;我们将使用一种巧妙的方法。在这里,我们将尝试找到N-2个1,一个2,以及剩余的一个数N + D。因此,和、积和差将为:
- 和 = (N – 2)*1 + 2 + (N + D) = 2*N + D
- 积 = (N – 2)*1 * 2 * (N + D) = 2*N + 2*D
- 差 = (2*N + 2*D) – (2*N + D) = D
示例
#include<iostream> using namespace std; void getNNumbers(int n, int d) { for (int i = 0; i < n - 2; i++) cout << 1 << " "; cout << 2 << " "; cout << n + d << endl; } int main() { int N = 5, D = 8; getNNumbers(N, D); }
输出
1 1 1 2 13
广告