在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