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

C++の数値から最小桁を削除して形成された最大の立方体を見つける


コンセプト

与えられた数Nに関して、私たちの仕事は、数から最小の桁(おそらく0)を削除することによって形成できる最大の完全な立方体を決定することです。そのため、指定された番号から任意の数字を削除して、ターゲットに到達することができます。

ある整数Bに対してA=B ^ 3の場合、Aは完全な立方体と呼ばれます。

数が完全な立方体にできない場合は-1を印刷することがわかっています。

N =1025とします。上記の数値から0を削除すると、残りの数値として125が得られます。これは、5(5 * 5 * 5 =125)の立方根です。

N =806とします。0と6を削除すると、残りの数は2の立方根(2 * 2 * 2 =8)である8になることがわかりました。

メソッド

数のサブシーケンスごとに、数が立方体であるかどうかを調べてから、それらの中で最大の立方体と比較する必要があります。すべての部分文字列を作成するために、次の順列を作成できるように最後の文字を削除します。

したがって、数値num ="876"があり、その後、各要素を現在の文字列に追加して、-

を取得します。
8
87
876

この後、再帰は「87」で戻り、「7」が削除され、次の反復が呼び出され、サブシーケンス「86」が生成されます。したがって、これで「8」の再帰が完了します。サブシーケンスは「7」から始まり、「7」と「76」の後に「6」が続きます。

この結果、これにより、指定された番号876のすべてのサブシーケンスが得られます。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll mx1 = INT_MIN;
bool is_Cube(ll x1){
   int found = 0;
   for (int i = 2; i <= (x1 / 2); i++){
      if (x1 % i == 0){
         if ((i * i * i) == x1)
            found = 1;
      }
   }
   if (found == 1)
      return true;
   else
      return false;
}
void printSubSeqRec(string str, int n1, int index = -1, string curr1 = ""){
   if (index == n1)
      return;
   if (curr1 != ""){
      ll temp = stoi(curr1);
      if (is_Cube(temp))
         mx1 = max(mx1, temp);
   }
   for (int i = index + 1; i < n1; i++){
      curr1 += str[i];
      printSubSeqRec(str, n1, i, curr1);
      curr1 = curr1.erase(curr1.size() - 1);
   }
return;
}
int main(){
   int nums1 = 1025;
   string str1 = to_string(nums1);
   printSubSeqRec(str1, str1.size());
   if (mx1 != INT_MIN)
      cout << mx1;
   else
      cout << "NOT FOUND ANY CUBE";
   return 0;
}

出力

125

  1. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr

  2. Pythonで数値から最小桁を削除して形成された最大の立方体を見つける

    数がNであるとすると、数から最小桁(おそらく0)を削除することによって生成できる最大の完全な立方体を決定する必要があります。与えられた数字から任意の数字を削除して、ターゲットに到達することができます。私たちが知っているように、ある整数Mに対してN =M ^ 3の場合、数Nは完全な立方体と呼ばれます。 したがって、入力が806のような場合、出力は8になります。これは、数値から0と6を削除できるため、8になります。これは、2の完全な立方体です。 これを解決するには、次の手順に従います- 関数preProcess()を定義します。これにはnがかかります temp_cubes:=新しいリスト