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

n!となるようなxの最大値を見つけます。 %(k ^ x)=0(C ++の場合)


2つの整数nとkがあるとします。 n!のようなxの最大値を見つける必要があります。 mod(k ^ x)=0。したがって、n =5、k =2の場合、出力は3になります。Asn! =120、xの値が異なると、次のようになります-

120 mod 2 ^ 0 =0、120 mod 2 ^ 1 =0、120 mod 2 ^ 2 =0、120 mod 2 ^ 3 =0、120 mod 2 ^ 4 =8、120 mod 2 ^ 5 =24、120 mod 2 ^ 6 =56、120 mod 2 ^ 7=120。x=3の最大値として、結果は0であるため、出力は3です。

これを解決するには、次の手順に従う必要があります-

  • kの平方根を取り、mに保存します
  • i:=2からmの場合、次の手順を実行します。
    • i =mの場合、i:=kを設定します
    • kがiで割り切れる場合は、kをiで割ります
    • nまでループを実行し、uという変数に商を追加します。
    • 各ループの後に、rの最小値を保存します

#include <iostream>
#include <cmath>
using namespace std;
int calculateMaxX(int n, int k) {
   int result = n, v, u;
   int m = sqrt(k) + 1;
   for (int i = 2; i <= m && k > 1; i++) {
      if (i == m) {
         i = k;
      }
      for (u = v = 0; k % i == 0; v++) {
         k /= i;
      }
      if (v > 0) {
         int t = n;
         while (t > 0) {
            t /= i;
            u += t;
         }
         result = min(result, u / v);
      }
   }
   return result;
}
int main() {
   int n = 5;
   int k = 2;
   cout<<"Maximum value of x is: " << calculateMaxX(n, k);
}

出力

Maximum value of x is: 3

  1. C ++でa%b =kとなるような配列内のすべてのペア(a、b)を検索します

    配列Aがあるとすると、その配列から、a%b =kとなるようにすべてのペア(a、b)を取得する必要があります。配列がA=[2、3、4、5、7]、k =3であるとすると、ペアは(7、4)、(3、4)、(3、5)、(3、7)になります。 これを解決するために、リストをトラバースして、指定された条件が満たされているかどうかを確認します。 例 #include <iostream> using namespace std; bool displayPairs(int arr[], int n, int k) {    bool pairAvilable = true;

  2. 代数式の最大値を見つけるためのC++プログラム

    これは、任意の代数式の最大値を見つけるためのC ++プログラムです。(x1 + x2 + x3+。。。+xa)*(y1 + y2+。。。+yb)および(a + b )整数が与えられます。数値と残りのb数値のすべての可能な組み合わせを検討し、それらの値を計算して、そこから最大値を導き出すことができます。 アルゴリズム Begin    function MaxValue() :    Arguments:    a[]=array which store the elements.    x, y=integers.