使用给定的权重来平衡天平,权重是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。
因此将使用30和32(1+9)=10来进行。
情况2-更改基数时,如果表示仅具有非1和0的值,则平衡需要执行更多的操作。在此,解决方案的强制条件是基本转换的位数应为(a-1)。在这种情况下,我们会将值的力量转移给T的二元公司。并将基本表示中的数字增加1。
让我们举个例子
T = 7 : a = 3
将7的基数更改为3,我们将得到021。
将31转移到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