C++の数値の階乗で桁の合計を検索します
数値nがあるとすると、そのときの桁の合計を見つけることがタスクです!。 n =5と考えて、次にn! =120。したがって、結果は3になります。
この問題を解決するために、階乗桁を格納するベクトルを作成し、それを1で初期化します。次に、ベクトルに1からnを1つずつ乗算します。次に、ベクトル内のすべての要素を合計し、合計を返します
例
#include<iostream> #include<vector> using namespace std; void vectorMultiply(vector<int> &v, int x) { int carry = 0, res; int size = v.size(); for (int i = 0 ; i < size ; i++) { int res = carry + v[i] * x; v[i] = res % 10; carry = res / 10; } while (carry != 0) { v.push_back(carry % 10); carry /= 10; } } int digitSumOfFact(int n) { vector<int> v; v.push_back(1); for (int i=1; i<=n; i++) vectorMultiply(v, i); int sum = 0; int size = v.size(); for (int i = 0 ; i < size ; i++) sum += v[i]; return sum; } int main() { int n = 40; cout << "Number of digits in " << n << "! is: " << digitSumOfFact(n); }
出力
Number of digits in 40! is: 189
-
C ++を使用して、xとその数字の合計が与えられた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
-
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