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