在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

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告