C++の階乗の桁を数える
整数値が与えられ、タスクは最初に数値の階乗を計算し、次に結果の合計桁数を計算することです。
階乗数とは
数値の階乗は、数値の桁を1で除算しながら、数値の桁を乗算することによって計算されます。これは、記号「!」、つまり0!、1!、2!、3!、5!、..で示されます。 。、等。 0の階乗!と1!常に1です。
I.e. factorial of 2 = 2 * (2-1) = 2 * 1 = 2 factorial of 3 = 3 * (3-1) * (2-1) = 3 * 2 * 1 = 6
例
Input − factorial(6) Output − number of digits in factorial(6) is: 3
説明 − 6の階乗値は720であり、3桁が含まれているため、結果は3
Input − factorial(12) Output− number of digits in factorial(12) is: 9
説明 − 12の階乗値は479001600であり、9桁が含まれているため、結果は9になります。
以下のプログラムで使用されているアプローチは次のとおりです
-
階乗を計算する必要がある数を入力します。
-
数値が0未満の場合、負の数値には因数分解値がないため、0を返します
-
数値が1の場合、1なので1を返します。 1で、1桁です。
-
数が1より大きい場合、つまり2から始まる場合、または1つのループを作成する場合、2から始まり、数以下になるまで
-
1つの一時変数(たとえばd)を取得し、ループの外側で0で初期化し、ループの内側で、iが繰り返されるたびにlog10(i)の値を追加し続けます。
-
その後、「floor(d)+1」のフロア値を返します
-
結果を印刷します。
例
#include <iostream> #include <cmath> using namespace std; // This function returns the number of digits present in num! int count_digits(int num){ // factorial exists only if num <= 0 if (num < 0){ return 0; } // base case if (num <= 1){ return 1; } // else iterate through num and calculate the // value double d = 0; for (int i=2; i<=num; i++){ d += log10(i); } return floor(d) + 1; } int main(){ cout<<"number of digits in factorial(1) is: "<<count_digits(1)<< endl; cout<<"number of digits in factorial(6) is: "<<count_digits(6) << endl; cout<<"number of digits in factorial(106) is: "<<count_digits(106) << endl; return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
number of digits in factorial(1) is: 1 number of digits in factorial(6) is: 3 number of digits in factorial(106) is: 171
-
C++で長方形の正方形の数を数える
=Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の1、2X2の4、1
-
C++で数値を除算する数値の桁数を検索します
番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std; int countDivDigit(int num) { int c