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

C++で必要な合計に対する2の累乗


この問題では、整数Nが与えられます。私たちのタスクは、2の累乗で数値を与える数値を出力することです。

問題を理解するために例を見てみましょう

入力 − 17

出力 − 0、4

説明 − 17 =2 4 + 2 0 =16 + 1

この問題を解決するために、数値を2で再帰的に除算します。この方法では、すべての数値を2の累乗として表すことができます。この方法は、数値を2進数に変換するために使用されます。

ソリューションの実装を示すプログラム

#include <bits/stdc++.h>
using namespace std;
void sumPower(long int x) {
   vector<long int> powers;
   while (x > 0){
      powers.push_back(x % 2);
      x = x / 2;
   }
   for (int i = 0; i < powers.size(); i++){
      if (powers[i] == 1){
         cout << i;
         if (i != powers.size() - 1)
            cout<<", ";
      }
   }
   cout<<endl;
}
int main() {
   int number = 23342;
   cout<<"Powers of 2 that sum upto "<<number<<"are : ";
   sumPower(number);
   return 0;
}

出力

Powers of 2 that sum upto 23342are : 1, 2, 3, 5, 8, 9, 11, 12, 14

  1. 他の累乗での数値のC++表現

    別の数の累乗で数を表す問題について話し合います。 xとyの2つの数字が与えられます。たとえば、yをxの累乗で表すことができるかどうかを判断する必要があります。たとえば、xの各累乗を1回使用できます。 Input: x = 4, y = 11 Output: true Explanation: 4^2 - 4^1 - 4^0 = 11 Hence y can be represented in the power of x. Input: x = 2, y = 19 Output: true Explanation: 2^4 + 2^1 + 2^0 =19 Hence y can be rep

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと