C++で指定された桁数と桁数の合計で最大の数値を検索します
この問題では、2つの整数値が与えられます。Nは数値の桁数を示し、sumは数値の桁の合計を示します。私たちのタスクは、指定された桁数と桁数の合計で最大の数を見つけることです 。
問題を理解するために例を見てみましょう
Input : N = 3, sum = 15 Output : 960
ソリューションアプローチ
この問題を解決する簡単な方法は、N桁の数字すべてを最大から最小までトラバースすることです。合計が数値を返すのと等しい場合は、数字の合計数を見つけます。
例
ソリューションの動作を説明するプログラム
#include <iostream> using namespace std; int digitSum(int n){ int sum = 0; while(n){ sum += n%10; n = n/10; } return sum; } int findLargestNumWithSum(int N, int sum){ if (sum == 0){ if(N == 1) return -1; else return -1; } if (sum > 9*N){ return -1; } int num = 1; for(int i = 0; i < N; i++) num *= 10; while(1){ if(digitSum(num) == sum){ return num; } num -- ; if(num == 0) return -1; } } int main(){ int sum = 25, N = 3; cout<<"The largest "<<N<<" digit number with sum "<<sum<<" is "<< findLargestNumWithSum(N, sum); return 0; }
出力
The largest 3 digit number with sum 25 is 997
この問題を解決する別のアプローチは、欲張りアプローチを使用することです。これを行うには、MSBから開始し、合計から可能な限り高い数値を配置し、合計から減算します。
このステップをN回実行し、必要な数を取得します。したがって、合計が9より大きい場合は、現在の桁に9を配置し、9未満の場合は、合計を現在の桁に配置します。 MSBからLSBまでのすべての数字に対して、このプロセスを実行します。
例
ソリューションの動作を説明するプログラム
#include <iostream> using namespace std; int findLargestNumWithSum(int N, int sum){ if (sum == 0){ if(N == 1) return -1; else return -1; } if (sum > 9*N){ return -1; } int num = 0; for (int i = 0; i < N; i++){ if (sum >= 9){ num += 9; sum -= 9; if(i < (N - 1)){ num *= 10; } } else{ num += sum; sum = 0; if( i < (N - 1)) num *= 10; } } return num; } int main(){ int sum = 25, N = 3; cout<<"The largest "<<N<<" digit number with sum "<<sum<<" is "<<findLargestNumWithSum(N, sum); return 0; }
出力
The largest 3 digit number with sum 25 is 997
-
xとその桁の合計がC++で指定されたnと等しくなるような数xを見つけます
ここで、1つの問題が発生します。ここで、数値nを取得する場合、x +桁の合計xが指定された数値nと同じになるように、xなどの別の値を見つける必要があります。 nの値が21であると仮定します。このプログラムは、15+桁の合計15、つまり15 + 1 + 5 =21=nとして数値x=15を返します。 この問題を解決するには、単純なアプローチに従う必要があります。 1からnまで繰り返し、各繰り返しで、数値とその桁の合計の合計が数値と同じであるかどうかを確認し、停止します。それ以外の場合は続行します。 例 #include<iostream> using namespace std; i
-
指定された数値の桁を合計するC++プログラム
これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() { int x, s = 0; cout << "Enter the number : "; cin >> x; while (x != 0) { s = s + x % 10; x = x / 10;