数値の階乗で後続ゼロをカウントするC/C ++プログラム?
ここでは、任意の数の階乗の結果の末尾の0の数を計算する方法を説明します。したがって、n =5の場合、5! =120。末尾の0は1つだけです。20!の場合、20!として4つのゼロになります。 =2432902008176640000。
最も簡単なアプローチは、階乗を計算して0を数えることです。ただし、このアプローチは、nの値が大きい場合は失敗します。したがって、別のアプローチに従います。素因数が2と5の場合、後続のゼロがそこにあります。2と5を数えると、結果を得ることができます。そのために、このルールに従います。
末尾の0=factorial(n)の素因数の5の数
アルゴリズム
countTrailingZeros(n)
begin count := 0 for i := 5, (n/i) >= 1, increase i := i * 5, do count := count + (n / i) done return count; end>
例
#include <iostream> #include <cmath> #define MAX 20 using namespace std; int countTrailingZeros(int n) { int count = 0; for (int i = 5; n / i >= 1; i *= 5) count += n / i; return count; } main() { int n = 20; cout << "Number of trailing zeros: " << countTrailingZeros(n); }
出力
Number of trailing zeros: 4
-
モジュラ方程式の解の数のためのC/C ++プログラム?
コインの数はn個あり、最大の高さのピラミッドを構成するコインの方法をフランス語にする必要があります。最初のコインを1列目に配置し、2番目と3番目のコインを2列目に配置します。 与えられた図では、高さ3のコインのピラミッド6を作成します。高さ4を作成することはできませんが、10枚のコインが必要になります。この式を使用すると、高さを簡単に取得できます。 H ={(-1 +√(1 + 8N))/ 2} Input: n = 10 Output: Height of pyramid: 4 説明 この式を使用した高さ H ={(-1 +√(1 + 8N))/ 2} 例 #include
-
n番目のカタラン数のC/C ++プログラム?
カタラン数は一連の数です。カタラン数は、さまざまなカウントの問題で発生する一連の自然数を形成します。多くの場合、再帰的に定義されたオブジェクトが関係します。 C n 長さ2nのディック言語の数です。ディックワードは、n個のXとn個のYで構成される文字列であり、文字列の最初のセグメントにXより多くのYが含まれることはありません。たとえば、次は長さ6のディック言語です XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY. 記号Xを開き括弧として、Yを閉じ括弧として再解釈します。C n 正しく一致するn組の括弧を含む式の数をカウントします ((()