桁の合計がC++で指定された合計に等しいn桁の数値の数
桁数と合計として正の数が与えられます。目標は、入力の合計に等しい桁の合計を持つすべてのd桁の数値を見つけることです。先行ゼロのある数字は、d桁の数字とは見なされません。
範囲は1〜100の数字で、合計は1〜500です。
例を挙げて理解しましょう。
例
入力- 数字=3、digi_sum =3
出力- 桁の合計が指定された合計に等しいn桁の数字の数は次のとおりです。6
説明- 桁の合計が3である3桁の数字は次のとおりです。
102、111、120、201、210、および300。
入力- 数字=4digi_sum =2
出力- 桁の合計が指定された合計に等しいn桁の数字の数は次のとおりです。4
説明- 桁の合計が2である4桁の数字は次のとおりです:
1001、1010、1100、および2000。
以下のプログラムで使用されているアプローチは次のとおりです
このアプローチでは、最初のd桁の数字からトラバースし、数字の合計が指定された合計に等しい最初の数字を見つけます。次に、指定された合計よりも大きい桁の合計が見つかるまで、数値を9ずつ増やします。入力合計よりも大きい桁の合計を持つ数値が見つかったら、その数値を1ずつインクリメントし、合計を入力合計として次の数値を見つけます。最後のd桁の数字までこのプロセスを繰り返します。
- 桁数と桁数の合計を入力として使用します。
- 関数digits_sum(int Digits、int digi_sum)は両方の入力値を受け取り、桁の合計が指定された合計に等しいn桁の数値の数を返します。
- 初期カウントを0とします。
- 最初の数字をLeft=pow(10、digits-1)とします。そして、範囲の最後の数字はright =pow(10、digits)-1(つまり、digits =2の場合は10と99)です。
- whileループを使用して左から右にトラバースします。
- first=0およびlast=iを取得します。
- 各i(最後)について、右端の数字(最後の%10)を取り、最初に追加します。次の反復のために最後を10減らします。
- 最初にdigi_sumと等しくなった場合は、カウントをインクリメントし、次の反復のためにiを9ずつ更新します。
- それ以外の場合は、iを1インクリメントします。
- すべてのループの最後に、数字の合計がdigi_sumに等しい数値としてカウントされます。
- 結果としてカウントを返します。
例
#include <bits/stdc++.h> using namespace std; int digits_sum(int digits, int digi_sum) { int count = 0; int Left = pow(10, digits - 1); int right = pow(10, digits) - 1; int i = Left; while (i <= right) { int first = 0; int last = i; while (last != 0) { first = first + last % 10; last = last / 10; } if (first == digi_sum) { count++; i = i + 9; } else { i++; } } return count; } int main() { int digits = 5; int digi_sum = 7; cout << "Count of n digit numbers whose sum of digits equals to given sum are: " << digits_sum(digits, digi_sum); return 0; }
上記のコードを実行すると、次の出力が生成されます-
出力
Count of n digit numbers whose sum of digits equals to given sum are: 5
-
桁の合計がC++で指定された合計に等しいすべてのn桁の数値を出力します
この問題では、2つの数値nとsumが与えられます。合計が合計に等しいn桁の数値をすべて印刷する必要があります。この問題では、先行ゼロが付いた数字は考慮されません。 問題を理解するために例を見てみましょう Input: n = 2 , sum = 5 Output: 14 23 32 41 50 Explanation: The sum of digits of the number in all numbers in 5. この問題を解決するには、指定された合計値を持つ合計を持つすべてのn桁の数値を見つける必要があります。このために、すべての値で桁の場所を固定し、その位置が偶数または奇数に
-
合計とGCDがC++で与えられている2つの数値を見つけます
2つの数aとbの合計とgcdがあります。数字aとbの両方を見つける必要があります。それが不可能な場合は、-1を返します。合計が6でgcdが2であるとすると、数値は4と2になります。 このアプローチは、GCDが与えられると、その数がその倍数になることが知られているようなものです。次の手順があります 最初の数値をGCDとして選択すると、2番目の数値はsum − GCDになります。 前の手順で選択した数値の合計が合計と同じである場合は、両方の数値を出力します。 それ以外の場合は、数値が存在しないため、-1を出力します。 例 #include <iostream>