C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラムの数値の累乗である特定の重みを使用してパンのバランスを取ります


ステートメント-数値の累乗である特定の重みを使用してパンのバランスを取ります。

説明-この問題では、パンベースの計量機が提供されます。重みTと、値が数値の累乗である他のいくつかの重みa。が与えられます。 与えられた重みを使用して鍋のバランスをとる必要があります。

これに基づいて、次の方程式が得られます。

T +(aの一部の累乗)=(aのその他の累乗)

ここで、パワー値に対応する重みが1つだけあることを覚えておく必要があります。

T = 12 : a = 4

以下の値を使用して、重みのバランスをとることができます。

12 + 4 = 16

ここで、この問題を解決し、Tをaの累乗で表す必要があります。このために、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のdideに転送します。そして、基数表現の数を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

  1. 再帰を使用して数値の階乗を見つけるC++プログラム

    非負の整数nの階乗は、n以下のすべての正の整数の積です。 例:4の階乗は24です。 4! = 4 * 3 * 2 *1 4! = 24 整数の階乗は、再帰プログラムまたは反復プログラムを使用して見つけることができます。 次のプログラムは、数値の階乗を見つけるための再帰プログラムを示しています- 例 #include <iostream> using namespace std; int fact(int n) {    if ((n==0)||(n==1))    return 1;    else   &

  2. 反復を使用して数値の階乗を見つけるC++プログラム

    非負の整数nの階乗は、n以下のすべての正の整数の積です。 例:6の階乗は720です。 6! = 6 * 5 * 4 * 3 * 2 *1 6! = 720 整数の階乗は、再帰プログラムまたは反復プログラムを使用して見つけることができます。 forループは、反復プログラムを使用して数値の階乗を見つけるために使用できます。これは次のように示されます。 例 #include <iostream> using namespace std; int main() {    int n = 6, fact = 1, i;    for(i=1; i