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

C++を使用した合計がnに等しい電力項の最小数。


問題の説明

2つの正の整数NとXが与えられます。タスクは、Xの累乗の数が最小になるようにNをXの累乗の合計(X0 +X1+…..+Xn)として表すことです。

合計をNに等しくするために使用されるNの最小累乗数を出力します。

N=15およびX=3の場合、次のように「3」の3乗が必要です-

15 =(3 2 + 3 1 + 3 1

アルゴリズム

以下の式を使用して最終結果を計算します-

1. If x = 1, then answer will be n only (n = 1 + 1 +…. n times)s
2. Any number n can be expressed as, n = x * a + b where 0 −= b −= x-1. Now since b is between 0 to x – 1, then b should be expressed as sum of x0 b times

#include <iostream>
using namespace std;
int minNumOfPower(int n, int x){
   if (x == 1) {
      return n;
   }
   int result = 0;
   while (n > 0) {
      result = result + (n % x);
      n = n / x;
   }
   return result;
}
int main(){
   int n = 15;
   int x = 3;
   cout << "Minimum number of powers = " <<
   minNumOfPower(15, 3) << endl;
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

Minimum number of powers = 3

  1. C++を使用してすべての要素を等しくするための最小移動数。

    問題の説明 N個の要素の配列と整数Kが与えられた場合、与えられた配列に対して次の操作を何度でも実行できます- K thを挿入します 配列の最後にある要素を削除し、配列の最初の要素を削除します。 タスクは、配列のすべての要素を等しくするために必要な最小移動数を見つけることです。不可能な場合は-1を印刷します If arr[] = {1, 2, 3, 4, 5, 6} and k = 6 then minimum 5 moves are required: Move-1: {2, 3, 4, 5, 6, 6} Move-2: {3, 4, 5, 6, 6, 6} Move-3: {

  2. C ++を使用して、数の因数の最小合計を求めます。

    ここでは、与えられた数の因子の最小合計を取得する方法を見ていきます。数が12であると仮定します。これはさまざまな方法で因数分解できます- 12 =12 * 1(12 + 1 =13) 12 =2 * 6(2 + 6 =8) 12 =3 * 4(3 + 4 =7) 12 =2 * 2 * 3(2 + 2 + 3 =7) 最小の合計は7です。数値を取り、最小の因子の合計を見つけようとします。最小の因数分解の合計を取得するには、可能な限り数を因数分解する必要があります。言い換えれば、素因数を足して合計Sを求めようとすると、その合計は最小化されると言えます。 例 #include<