与えられた数字根を持つ範囲内の数字を見つけるためのC++プログラム
その桁の合計は、数値の数字根を見つけることができます。合計が1桁の場合、それは数字根です。このチュートリアルでは、数値の範囲と整数Xが与えられ、その範囲内の数字の数をXとして数える必要がある問題について説明します。たとえば、Xは1桁の数値です
Input: l = 13, r = 25, X = 4 Output: 2 Explanation: Numbers in the range (13,25) having digit sum 4 are 13 and 22. Input: l = 11, r = 57 Output: 6
解決策を見つけるためのアプローチ
シンプルなアプローチ
簡単なアプローチでは、lからrまでの数値をトラバースして、その合計がXに等しいかどうかを確認できます。ただし、これにより、O(N)の時間計算量が作成されます。ここで、Nは範囲内の総数です。
効率的なアプローチ
数字根をXとする範囲の数値を見つけるには、範囲内のすべての数値の桁の合計がKに等しく、桁の合計が常にnum%9に等しいかどうかを確認する必要があり、余りの場合は9になります。 0になるので、X =9の場合は、0に変更します。
数の数を見つけるには、範囲全体を9のグループに分割します。次に、モジュロ9がXに等しい各グループに正確に1つの数があります。その後、グループにない省略された数を確認します。 num%9 =Xの条件を満たすために、各数値を個別にチェックしてください。
例
上記のアプローチのC++コード
#include <bits/stdc++.h> #define ll long long int using namespace std; int main(){ int l = 13; int r = 25; int X = 4; if (X == 9) X = 0; // count all the numbers in the range int total = r - l + 1; // Divide numbers into maximum groups of 9 int groups = total/ 9; // since for N groups there will be N numbers with modulo 9 equals to X. int result = groups; // check all the left out numbers int left_out = total % 9; // checking each left out number separately for the condition. for (int i = r; i > r - left_out; i--) { int rem = i % 9; if (rem == X) result++; } cout << "Total Numbers in a Range( l, r ) with given Digital Root(X) are: " << result; return 0; }
出力
Total Numbers in a Range( l, r ) with given Digital Root(X) are: 2
結論
このチュートリアルでは、数値の範囲と数字根の問題について説明しました。数字根をXとして持つすべての数字を見つける必要があります。数字を9桁のグループに分割することで、この問題を解決するための簡単なアプローチと効率的なアプローチについて説明しました。
各グループには、Xとして数字根を持つ1つの数値が含まれています。また、C、Java、Pythonなどのプログラミング言語で実行できるこの問題のC++プログラムについても説明しました。このチュートリアルがお役に立てば幸いです。
-
C++で指定されたインデックスを持つNフィボナッチ数のGCDを検索します
ここでは、指定されたインデックスを持つn個のフィボナッチ項のGCDを見つける必要があります。したがって、最初に最大インデックスを取得し、フィボナッチ項を生成する必要があります。いくつかのフィボナッチ項は次のようになります:0、1、1、2、3、5、8、13、21、34、…..インデックスは開始です0から。したがって、0 thの要素 インデックスは0です。インデックス{2、3、4、5}でフィボナッチ項のgcdを見つける必要がある場合、項は{1、2、3、4}であるため、これらの数値のGCDは1です。 このタスクを実行するために、1つの興味深いアプローチを使用します。 GCD(Fibo(i)、Fi
-
与えられた範囲の数のランダム化されたシーケンスを生成するC++プログラム
まず、rand()関数について説明します。 rand()関数は、C++の事前定義されたメソッドです。 ヘッダーファイルで宣言されています。 rand()は、範囲内の乱数を生成するために使用されます。ここで、min_nは乱数の最小範囲であり、max_nは乱数の最大範囲です。したがって、rand()は、制限値を含めて、min_nから(max_n – 1)までの乱数を返します。ここで、下限と上限をそれぞれ1と100とすると、rand()は1から(100 – 1)までの値を返します。つまり、1から99まで。 アルゴリズム Begin Declare max_n to the