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

与えられた数字根を持つ範囲内の数字を見つけるための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++プログラムについても説明しました。このチュートリアルがお役に立てば幸いです。


  1. 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

  2. 与えられた範囲の数のランダム化されたシーケンスを生成する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