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

C++の強力な整数


3つの整数「a」と「b」および「limit」があると仮定します。タスクは、[a、limit]の範囲の数値を出力することです。これらの数値のリストは強力な整数であると言われ、

として表されます。

a ^ i + b ^ j i>=0およびj>=0

入力-1:

a = 2

b = 5

limit = 10

出力:

[2, 3, 4, 5, 6, 7, 9]

説明: iとjごとに

2 ^ 0 + 5 ^ 0 =2、2 ^ 0 + 5 ^ 1 =6

2 ^ 1 + 5 ^ 0 =3、2 ^ 1 + 5 ^ 1 =7

2 ^ 2 + 5 ^ 0 =5、2 ^ 3 + 5 ^ 0 =9

この問題を解決するためのアプローチ

この特定の問題を解決するための力ずくのアプローチは、2つのネストされたループを取り、限界まで反復することです。次に、上限の各指数の2つの数値の合計を見つけ、結果の数値をリストに挿入します。

  • 「a」、「b」、「limit」の3つの数字を取ります。
  • 関数powerfulnumbers(int a、int b、int limit)は、数値「a」、「b」、および「limit」を入力として受け取ります。この関数は、a ^ i + b ^ j(i>=0およびj>=0)のようなすべての多冪数のリストを返します。
  • 限界までの範囲で2つのネストされたループを取り、毎回、そのインデックスを掛けて多冪数を見つけます。
  • 数値が範囲[a、limit]の間にある場合は、数値をセットに格納します(数値の重複を避けるため)。
  • セットを繰り返し処理して、出力を印刷します。

#include <bits/stdc++.h>
using namespace std;
void powerfulNum(int a, int b, int limit) {
   set < int > s;
   for (int i = 1; i < limit; i *= a) {
      for (int j = 1; j < limit; j *= b) {
         if (i + j <= limit) {
            s.insert(i + j);
         } else break;
         if (b == 1) break;
      }
      if (a == 1) break;
   }
   for (auto it: s) {
      cout << it << " ";
   }
}
int main() {
   int a = 2;
   int b = 5;
   int limit = 10;
   powerfulNum(a, b, limit);
   return 0;
}

上記のコードを実行すると、次のように出力が生成されます

出力

2 3 5 6 7 9

ここで、2から10の範囲のすべての多冪数は[2、3、4、6、7、9]です。


  1. C++で数値文字列を整数に変換します

    ここでは、数値文字列を整数型データに変換する方法を説明します。この問題は、atoi()関数を使用して解決できます。この関数は文字列を入力として受け取り、整数データに変換します。 atoi()関数はライブラリにあります。 Input: A number string “1234” Output: 1234 アルゴリズム Step 1: Take a number string Step 2: Convert it to integer using atoi() function Step 3: Print the result. Step 4: End サンプルコード

  2. Pythonの強力な整数

    =0に対してx^i + y ^ jに等しい場合、整数は強力であると言えます。すべてのリストを見つける必要があります。 -値がbound以下の強力な整数。 したがって、入力がx=2およびy=3のようで、境界が10の場合、出力は[2,3,4,5,7,9,10]となり、2 =2 ^ 0 +3^となります。 0 3 =2 ^ 1 + 3 ^ 0 4 =2 ^ 0 + 3 ^ 1 5 =2 ^ 1 + 3 ^ 1 7 =2 ^ 2 + 3 ^ 1 9 =2 ^ 3 + 3 ^ 0 10 =2 ^ 0 + 3 ^ 2 これを解決するには、次の手順に従います- a、bを0として初期化します re