使用给定的权重来平衡天平,权重是C ++程序中数字的幂

声明-天平秤使用给定的权重,即数字的幂。

描述-在这个问题上,我们给了一个基于锅的称重机。我们得到一个权重T和其他权重,其权重是数我们需要使用给定的重量来平衡锅。

现在,有了这个方程,

T +(a的某些幂)=(a的其他幂)

现在,我们应该记住,恰好有一个权重对应于幂值。

例,

T = 12 : a = 4

使用以下值,我们可以按以下方式平衡权重:

12 + 4 = 16

现在,我们解决了这个问题,我们需要用a的幂表示T。为此,我们将T的底数从10改为a

情况1-更改基数时,如果表示的值中只有1和0。然后可以使用1的权重来累加地创建T的值。

让我们举个例子

T = 10 : a = 3,

将10的底数更改为3,该值变为101。

因此将使用3 0和3 2(1 + 9)= 10来进行。

情况2-更改基数时,如果表示仅具有非1和0的值,则平衡需要执行更多的操作。在此,解决方案的强制条件是基本转换的位数应为(a-1)。在这种情况下,我们会将值的力量转移给T的二元公司。并将基本表示中的数字增加1。

让我们举个例子

T = 7 : a = 3

将7的基数更改为3,我们将得到021。

将3 1转移到T的一边,另一边增加1。我们得到的数字= 10,它表示为101即(9 +1)。可以平衡的。

基于以上情况,我们将创建一个程序来解决此问题。

示例

#include <bits/stdc++.h>
using namespace std;
bool isBalancePossible(int T, int a){
   vector<int> baseForm;
   while (T) {
      baseForm.push_back(T % a);
      T /= a;
   }
   baseForm.push_back(0);
   for (int i = 0; i < baseForm.size(); i++) {
      if (baseForm[i] != 0 && baseForm[i] != 1 &&
      baseForm[i] != (a - 1) && baseForm[i] != a)
      return false;
   if (baseForm[i] == a || baseForm[i] == (a - 1))
      baseForm[i + 1] += 1;
   }
   return true;
}
int main(){
   int T = 21;
   int a = 4;
   if (isBalancePossible(T, a))
      cout << "Balance is possible" << endl;
   else
      cout << "Balance is not possible" << endl;
   return 0;
}

输出结果

Balance is possible