C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

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

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