在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
廣告