在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

更新于:2019年12月19日

浏览量:135

启动您的职业生涯

通过完成课程获得认证

开始学习
广告