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

C ++の(1 ^ 1)*(2 ^ 2)*(3 ^ 3)*(4 ^ 4)*..の後続ゼロの数をカウントします


入力として整数numを指定します。目標は、積11 X 22X33X…Xnum num の後続ゼロの数を見つけることです。 。

入力

num=5

出力

Count of number of trailing zeros in (1^1)*(2^2)*(3^3)*(4^4)*.. are: 5

説明

The number of 2s and 5s in the product will be:
11 * 22* 33* 44* 55=11 * 22* 33* (22)4* 55. So total 10 2s and 5 5s, minimum is 5 so trailing zeroes will be 5.

入力

num=10

出力

Count of number of trailing zeros in (1^1)*(2^2)*(3^3)*(4^4)*.. are: 5

説明

The number of 2s and 5s in the product will be:
11 *22*33*44*55*66 *77*88*99*1010 = 11 *22*33*44*55*66 *77*88*99*(2*5)10. So total 20 2s and 15 5s, minimum is 15 so trailing zeroes will be 15.

以下のプログラムで使用されるアプローチは次のとおりです

このアプローチでは、積の各数の素因数分解で2と5の数を数えます。各数値がそれ自体の累乗になると、因数分解での2秒または5秒の最小カウントにより、後続ゼロのカウントが得られます。 2*5ごとに製品に0が1つ追加されます。

  • 入力として整数numを取ります。

  • 関数count_trailing(int num)は、numを取り、(1 ^ 1)*(2 ^ 2)*(3 ^ 3)*(4 ^ 4)* .....

    のトレーリングゼロの数を返します。
  • 初期カウントを0とします。

  • 2秒と5秒のカウントの場合は変数temp_2=0、temp_5=0を取ります。

  • i=1からi<=numまでのforループを使用してトラバースします。

  • 私として臨時雇用者を取る。

  • tempは2で割り切れますが、それを半分に減らし、iを追加してtemp_2を2の数としてカウントします。

  • tempは5で割り切れますが、それを5で割り、iを加算してtemp_5を5の数として数えます。

  • count =min(temp_2、temp_5)を使用して、countを最低2つのカウントとして取得します。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int count_trailing(int num){
   int count = 0;
   int temp_2 = 0;
   int temp_5 = 0;
   for (int i = 1; i <= num; i++){
      int temp = i;
      while(temp % 2 == 0 && temp > 0){
         temp = temp / 2;
         temp_2 = temp_2 + i;
      }
      while (temp % 5 == 0 && temp > 0){
         temp = temp / 5;
         temp_5 = temp_5+ i;
      }
   }
   count = min(temp_2, temp_5);
   return count;
}
int main(){
   int num = 5;
   cout<<"Count of number of trailing zeros in (1^1)*(2^2)*(3^3)*(4^4)*.. are: "<<count_trailing(num);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of trailing zeros in (1^1)*(2^2)*(3^3)*(4^4)*.. are: 5

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

  2. C++の階乗後続ゼロ

    ここでは、任意の数の階乗の結果の末尾の0の数を計算する方法を説明します。したがって、n =5の場合、5! =120。末尾の0は1つだけです。20の場合! 20として4つのゼロになります! =2432902008176640000。 最も簡単なアプローチは、階乗を計算して0を数えることです。ただし、このアプローチは、nの値が大きい場合は失敗します。したがって、別のアプローチに従います。素因数が2と5の場合、末尾のゼロがあります。2と5を数えると、結果を得ることができます。そのために、このルールに従います。 末尾の0=factorial(n)の素因​​数の5の数 したがって、末尾の0 =$$