C++で同じ数字のセットで次に大きい数を検索します
この問題では、要素Nが与えられます。同じ数字のセットで次に大きい数字を見つける必要があります。同じ桁でNより大きい最小の数を見つける必要があります。
問題を理解するために例を見てみましょう
入力
N = "92534"
出力
92543
ソリューションアプローチ
次に大きな要素を見つけるための問題の簡単な解決策は、次のアプローチによるものです-
-
数値を最下位ビットから最上位ビットにトラバースします。そして、現在の要素が最後の要素よりも小さいときに停止します。
-
この後、残りの配列で最小の要素を検索します。そして、最小の番号を見つけて、その番号と交換します。
-
次に、残りのサブアレイを並べ替えて、出力を返します。
ソリューションの動作を説明するプログラム
例
#include <iostream> #include <cstring> #include <algorithm> using namespace std; void findNextGreater(char number[], int n) { int i, j; for (i = n-1; i > 0; i--) if (number[i] > number[i-1]) break; if (i==0) { cout<<"Next number is not possible"; return; } int x = number[i-1], smallest = i; for (j = i+1; j < n; j++) if (number[j] > x && number[j] < number[smallest]) smallest = j; char temp = number[smallest]; number[smallest] = number[i-1]; number[i-1] = temp; sort(number + i, number + n); cout<<number; return; } int main(){ char number[] = "92534"; int n = strlen(number); cout<<"The next number with same set of digits is "; findNextGreater(number, n); return 0; }
出力
The next number with same set of digits is 92543
-
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
-
C++でDで割り切れるN桁の数値を検索します
NとDの2つの数があるとします。Dで割り切れるN桁の数を見つける必要があります。Nが3で、Dが5の場合、数は500になります。これは簡単に解決できます。 Dが10でNが1の場合、それは不可能です。 Dを入れて、Dの桁数がmであると仮定し、N – m個の0を付けて、N桁の数でDで割り切れるようにします。 例 #include<iostream> using namespace std; string nDigitDivByD(int n, int d) { string ans = ""; if (d <