数値とその桁の合計の差がC++の特定の値より大きい数値をカウントします
範囲[1、N]を定義する2つの数値Nと差であるDが提供されます。目標は、[数値-(桁の合計) ]> D. 1からNまでの数値をトラバースすることでこれを行い、各数値について、whileループを使用してその桁の合計を計算します。数値と計算された桁の合計にDより大きい差があるかどうかを確認します。
例を挙げて理解しましょう。
入力
N=15 D=5
出力
Numbers such that difference b/w no. and its digit sum greater than value D: 6
説明
Numbers 10, 11, 12, 13, 14, 15 satisfy the condition. ( 10-1, 11-2, 12-3, 13-4, 14-5, 15-6 ) all differences are 9 which is greater than 5.
入力
N=20 D=10
出力
Only 20 satisfies the condition. 20-2=18 > 10.
説明
This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200
以下のプログラムで使用されているアプローチは次のとおりです
-
整数NとDを取ります。
-
関数digitSum(int n、int d)は、変数N、Dを取り、(num-digitsum)>dの数値の数を返します。
-
このような数値の場合、初期変数カウントを0とします。
-
変数digsumを0とします
-
forループを使用して数値の範囲をトラバースします。 i=1からi=n
-
ここで、数値num =iごとに、whileループを使用して数値が>0かどうかを確認します。
-
digsum + =num%10を計算します。 num =num / 10を減らして、次の桁を追加します。
-
しばらくして、(i --digsum> d)かどうかを確認します。真のインクリメントカウントの場合。
-
すべてのループの終わりに、カウントは条件を満たす総数になります。
-
結果としてカウントを返します。
例
#include <bits/stdc++.h> using namespace std; int digitSum(int n, int d){ int count = 0; int digsum = 0; for (int i = 1; i <= n; i++){ int num=i; digsum=0; while(num>0){ digsum+=num%10; //sum of digits num=num/10; } if(i-digsum>d) //original number is i { count++; //cout<<i<<" "; } } return count; } int main(){ int N = 20; int D = 8; cout <<"Numbers such that difference between number and its digit sum greater than specific value: "<<digitSum(N,D); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Numbers such that difference between number and its digit sum greater than specific value: 11
-
N以下で、C++の合計がSである最小数
問題の説明 1からNまでのN個の数とS個の数が与えられます。タスクは、合計してSを与える最小数の数を出力することです 例 n=7およびs=10の場合、最低2つの数字が必要です (9, 1) (8, 2) (7, 3) (6, 4) アルゴリズム Answer can be calculated using below formula (S/N) + 1 if { S %N > 0} 例 #include <bits/stdc++.h> using namespace std; int getMinNumbers(int n, int s) { r
-
C++で積と和の差が与えられたN個の整数を検索します
2つの整数NとDがあるとします。N個の整数のセットを見つける必要があります。ここで、それらの合計と積の差はDと同じです。N=3と仮定します。 D =5の場合、出力は1、2、8になります。ここで、合計は1 + 2 + 8 =11で、積は1 * 2 * 8 =16で、16と11の差は5です。 この問題を解決する必要があります。 1つのトリッキーな方法を使用します。ここでは、N–2の1の数、1つの2、残りの1つの数N + Dを見つけようとします。したがって、合計、積、および差は-になります。 合計=(N – 2)* 1 + 2 +(N + D)=2 * N + D 製品=(N – 2)* 1