C++で指定された範囲のすべてのGood数値を出力します
この問題では、3つの値L、R、およびdが与えられます。私たちの仕事は、すべての良い数字を印刷することです LからRの範囲内 数字としてdが含まれていません。
かなりの数 は、すべての桁がその右側の桁の合計よりも大きい数値です(すべての桁数がそれよりも小さい)。たとえば、732は適切な数値であり、7> 3+2および3>2です。
それでは、問題を理解するために例を見てみましょう。
Input: L = 400 , R = 500 , k = 3 Output: 410, 420, 421
説明 − 400〜500の適切な数値は−
410, 420, 421, 430, but we cannot use 3 so 430 is not printed.
この問題を解決するために、このために、指定された範囲内のすべての数値をチェックします。つまり、数値が適切な数値であり、その数字のいずれかがkと等しくない場合は、LからRまでをチェックし、それ以外の場合はそのままにします。
適切な番号を確認してください −数値を右から左にトラバースし、合計が次の数値よりも大きい場合はいつでも合計を維持します。
例
以下のアルゴリズムを説明するプログラムを見てみましょう-
#include<bits/stdc++.h>
using namespace std;
bool isvalidNumber(int n, int d){
int digit = n%10;
int sum = digit;
if (digit == d)
return false;
n /= 10;
while (n){
digit = n%10;
if (digit == d || digit <= sum)
return false;
else{
sum += digit;
n /= 10;
}
}
return 1;
}
void printGoodNumbersLtoR(int L, int R, int d){
for (int i=L; i<=R; i++){
if (isvalidNumber(i, d))
cout << i << " ";
}
}
int main(){
int L = 400, R = 600, d = 3;
cout<<"All good numbers from "<<L<<" to "<<R<<" that do not contain "<<d<<" are :\n";
printGoodNumbersLtoR(L, R, d);
return 0;
} 出力
All good numbers from 400 to 600 that do not contain 3 are − 410 420 421 510 520 521 540
-
指定された範囲でBSTキーを出力します-O(1)スペース(C ++)
この問題では、2つの値k1とk2(k1
-
C++で特定のノードから距離kにあるすべてのノードを出力します
この問題では、二分木、ターゲットノード、整数Kが与えられます。ターゲットノードから距離Kにあるツリーのすべてのノードを印刷する必要があります。 。 二分木 は、各ノードに最大2つのノード(1つまたは2つ/なし)を持つ特別なツリーです。 問題を理解するために例を見てみましょう K =2 ターゲットノード:9 出力 − 5 1 3. 説明 − 距離は、ノードの上位、下位、または同じレベルで取得できます。したがって、それに応じてノードを返します。 この問題を解決するには、ターゲットノードからK距離離れたノードのタイプを理解する必要があります。 上記の試験から、k個の離