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

Nの基数16表現で後続ゼロの数を見つけます! C++を使用する


この記事では、たとえば階乗の基数16の表現で特定の数Nの後続ゼロを見つける問題を理解します

Input : N = 7
Output : 1
Explanation : fact(7) = 5040 in base10 and 13B0 in base16 having 1 trailing zero.

Input : N = 11
Output : 2
Explanation : fact(11) = 39916800 in base10 and 2611500 in base16 having 2 trailing zeroes.

まず、10進数を1つの基数から別の基数に変換するプロセスを要約します。 (5040)10を(?)16に変換する例を見てみましょう

Nの基数16表現で後続ゼロの数を見つけます! C++を使用する

つまり、数値を16で除算し、数値をそれ以上除算できなくなるまで余りを保持します。結果は逆の順序で残りになります。

その結果、末尾のゼロが1つあり、16で数値を余り0で割ったときに得られるこの末尾のゼロ。

5040の素因数分解=161* 451 * 71は、16が5040を1回除算し、余りが0で、末尾のゼロに等しいことを意味します。このようにして、後続ゼロの数を計算できます。

解決策を見つけるためのアプローチ

末尾のゼロの数を見つける方法については、上記で説明しました。また、16 =24であることがわかっています。これは、Nの最大累乗2を4で割ると、最大累乗の16に等しくなることを意味します。これはルジャンドルの公式とも呼ばれます。

上記のアプローチのC++コード

これが、与えられた問題を解決するための入力として使用できるC++構文です-

#include <bits/stdc++.h>
using namespace std;

int main () {
   int n = 11;
   long long int count = 0;
   long long int value, power = 2;
   long long int result;

   do{
      value = n / power;
      count += value;
      power *= 2;
   }
   while (value != 0);

   // Count has the highest power of 2
   result = count / 4;
   cout << "Number of trailing zeroes in base 16 representation of N : " << result;
}

出力

Number of trailing zeroes in base 16 representation of N: 2

上記のコードの説明

  • 最大電力2を計算する必要があるため、電力を2で初期化しています。
  • ルジャンドルの公式をwhileループに実装します。ここでは、nを最初は2の累乗で除算し、カウントを値で除算し、累乗を2で除算します。
  • 2の最大の累乗を4で割った後、カウント変数に格納されます。
  • 最終的に結果を印刷します。

結論

この記事では、階乗Nのbase16表現で後続ゼロの数を見つける問題を解決します。これは、ルジャンドルの公式を使用して解決します。同じ問題を解決するためにC++コードも記述します。このコードは、Java、C、Pythonなどの他の言語で記述できます。この記事がお役に立てば幸いです。


  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. C++を使用してセットの反射関係の数を見つける

    この記事では、集合上の反射関係の数を見つけるためのアプローチについて説明します。この問題では、数nが与えられ、n個の自然数のセットで、反射関係の数を決定する必要があります。 反射関係 −集合Aの関係は、(a、a)が集合Aに属するすべてのaがRに属する場合、反射的と呼ばれます。たとえば、- Input : x = 1 Output : 1 Explanation : set = { 1 }, reflexive relations on A * A : { { 1 } } Input : x = 2 Output : 4 Explanation : set = { 1,2 }, reflex