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

C++で同じ桁数のAとBを持つNよりも大きい数


与えられたN A 、および B 。同じ数のAでNより大きい数を見つけます およびB 数字。例を見てみましょう。

N = 1234
A = 2
B = 3

与えられた桁数の可能性をすべてチェックする必要があります。番号を形成するために2桁があります。また、数字の各桁数は同じである必要があります。

アルゴリズム

  • A、B、およびNを初期化します。

  • 再帰関数を記述します。

    • 現在の数がNより大きいかどうかを確認します Aの数は同じです およびB 数字。

    • 上記の条件が満たされている場合は、番号を返します。

    • 結果に数字Aを追加します。
    • 結果に数字Bを追加します。
    • 上記の2つから最小数で関数を再帰的に呼び出します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
long getNextGreaterElement(long result, int A, int A_Count, int B, int B_Count, int N) {
   if (result > 1e11) {
      return 1e11;
   }
   if (A_Count == B_Count && result >= N) {
      return result;
   }
   return min(getNextGreaterElement(result * 10 + A, A, A_Count + 1, B, B_Count, N),       getNextGreaterElement(result * 10 + B, A, A_Count, B, B_Count + 1, N));
}
int main() {
   int N = 1234;
   int A = 2;
   int B = 3;
   cout << getNextGreaterElement(0, A, 0, B, 0, N) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

2233

  1. 数字が7のみで、C++で合計が与えられた最小数

    問題の説明 ラッキーナンバーは、小数表現にラッキー数字4と7のみが含まれる正の整数です。タスクは、数字の合計がnに等しい最小のラッキーナンバーを見つけることです。 例 合計=22の場合、ラッキーナンバーは4 + 4 + 7 + 7=22として4477です アルゴリズム 1. If sum is multiple of 4, then result has all 4s. 2. If sum is multiple of 7, then result has all 7s. 3. If sum is not multiple of 4 or 7, then we can subtract

  2. C++で指定された数より大きい次の完全な正方形を見つけます

    数nがあるとします。私たちの仕事は、nの次の完全な平方数を見つけることです。したがって、数値n =1000の場合、次の完全な平方数は1024=322です。 これを解決するために、与えられた数nの平方根を取得し、その平方根を取得します。その後、(床の値+ 1)の平方根を表示します 例 #include<iostream> #include<cmath> using namespace std; int justGreaterPerfectSq(int n) {    int sq_root = sqrt(n);    return