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

C ++で桁の合計がYであるrange[L、R]からの数値の数


数値の範囲を定義するために、STARTとENDの2つの数値が提供されます。目標は、指定された数値Yに等しい桁の合計を持つ範囲[START、END]内のすべての数値を見つけることです。

これを行うには、STARTからENDまで数値をトラバースし、数値ごとに、whileループを使用してその桁の合計をカウントします。この合計がYに等しい場合は、カウントを増やします。

例を挙げて理解しましょう。

入力

START=10 END=20 Y=4

出力

Numbers such that digit sum is equal to Y: 1

説明

Number 13 has digit sum equal to 4.

入力

START=10 END=50 Y=5

出力

Numbers such that digit sum is equal to Y: 5

説明

Numbers 14, 23, 32, 41 and 50 have digit sum 5.

以下のプログラムで使用されているアプローチは次のとおりです

  • START、END、Yの整数を取ります。

  • 関数digitSum(int start、int end、int y)は、digitsum=yの数値の数を返します

  • このような数値の場合、初期変数カウントを0とします。

  • 変数digsumを0とします

  • forループを使用して数値の範囲をトラバースします。 i=開始から終了

  • ここで、数値num =iごとに、whileループを使用して数値が>0かどうかを確認します。

  • digsum + =num%10を計算します。 num =num / 10を減らして、次の桁を追加します。

  • しばらくして、(digsum ==d)かどうかを確認します。真のインクリメントカウントの場合。

  • すべてのループの終わりに、カウントは条件を満たす総数になります。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int digitSum(int start, int end, int y){
   int count = 0;
   int digsum = 0;
   for (int i = start; i <= end; i++){
      int num=i;
      digsum=0;
      while(num>0){
         digsum+=num%10; //sum of digits
         num=num/10;
      }
      if(digsum==y) //original number is i{
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int START = 100;
   int END = 1000;
   int Y = 5;
   cout <<"Numbers such that digit sum is equal to Y: "<<digitSum(START,END,Y);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Numbers such that digit sum is equal to Y: 15

  1. C++で1からNまでの概素数の数を見つける

    数Nがあるとします。1からNの範囲でほぼ素数を見つける必要があります。正確に2つの異なる因子がある場合、その数は概素数と呼ばれます。数には任意の数の非素因数を含めることができますが、2つの素因数である必要があります。したがって、Nが2の場合、出力は2になります。6と10の2つの数値があります。 ここでは、エラトステネスのふるいアプローチを使用します。より良いアイデアを得るために、次の実装を確認してください。 例 #include<iostream> #define N 100005 using namespace std; bool prime[N]; void SieveOfE

  2. C++での桁の合計に従って数値を並べ替えます

    このセクションでは、数字の合計に従って数値を並べ替える方法を説明します。したがって、数字の桁数が少ない場合は、最初に配置され、次に数字の合計が大きい数字が配置されます。 data = {14, 129, 501, 23, 0, 145} 並べ替えると、-になります。 data = {0, 14, 23, 501, 145, 129} ここでは、それらを並べ替えるための独自の比較ロジックを作成します。その比較ロジックは、C++STLの並べ替え関数で使用されます。 アルゴリズム compare(num1, num2): Begin    if sum of digits o