从 n 个和方程中找到 n 个变量,在 C++ 中缺少一个

在这个问题中,我们得到一个数组 sum[],它由 (n-1) 个变量的总和组成,如下所示,

Sum[1] = x2 + x3 + x4 + … xn

Sum[2] = x1 + x3 + x4 + … xn

.

.

Sum[i] = x2 + x3 + x4 + … x(i-1) + x(i+1) + … + xn

.

.

Sum[n] = x1 + x2 + x3 + … x(n-1)

Our task is to find the value of x1, x2,... xn.

让我们举个例子来理解这个问题,

输入

sum[] = {6, 6, 6, 6, 6, 6, 6}
输出结果
x1 = 1, x2 = 1, x3 = 1, x4 = 1, x5 = 1, x6 = 1, x7 = 1

解释

arr[1] = 1 + 1 + 1 + 1 + 1 + 1 = 6

解决方法

令所有变量的总和为 sumX,

sumX = x1 + x2 + x3 + … + xn

所以,和数组的值是 -

sum[1] = x2 + x3 + x4 + … xn

= -x1 + x1 + x2 + x3 + x4 + … xn

= sumX - x1

相似地,

sum[2] = sumX - x2

sum[3] = sumX - x3

.

sum[i] = sumX - xi

.

sum[n] = sumX - xn

将我们得到的所有 sum 数组相加,

Sum[1] + sum[2] + … sum[n] = sumX - x1 + sumX - x2 + … + sumX - xn

arrSum = n*sumX - (x1 + x2 + x3 … xn)

arrSum = n*SumX - (x1 + x2 + x3 … xn)

arrSum = sumX*(n-1)

sumX = arrSum/ (n-1)

使用 sumX 的这个值,我们可以找到 x1、x2…

所以,

x1 = sumX - sum[1]

x2 = sumX - sum[2]

..

xi = sumX - sum[i]

..

xn = sumX - sum[n]

程序来说明我们的解决方案的工作,

示例

#include <iostream>

using namespace std;

void calcSumVariables(int sum[], int n) {

   float SUMX = 0;

   for (int i = 0; i < n; i++) {

      SUMX += sum[i];

   }

   SUMX /= (n - 1);

   for (int i = 0; i < n; i++)

      cout<<"\nx"<<(i + 1)<<" = "<<(SUMX - sum[i]);

}

int main(){

   int sum[] = {3, 8, 6, 7, 4, 5, 9 };

   int N = sizeof(sum) / sizeof(sum[0]);

   cout<<"形成总和的变量的值是 ";

   calcSumVariables(sum, N);

   return 0;

}

输出结果

形成总和的变量的值是

x1 = 4

x2 = -1

x3 = 1

x4 = 0

x5 = 3

x6 = 2

x7 = -2

以上是 从 n 个和方程中找到 n 个变量,在 C++ 中缺少一个 的全部内容, 来源链接: utcz.com/z/356870.html

回到顶部