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

C++で関数Y=(X ^ 6 + X ^ 2 + 9894845)%981の値を見つけます


f(x)=(x ^ 6 + x ^ 2 + 9894845)%971のような関数を指定したとすると、指定されたxの値に対して、値を見つける必要があります。 f(x)の。

したがって、入力が5のような場合、出力は469

になります。

これを解決するには、次の手順に従います-

  • 関数power_mod()を定義します。これは、底、指数、モジュラス、

    を取ります。
  • ベース:=ベースモッドモジュラス

  • 結果:=1

  • 指数>0の場合、実行-

    • 指数が奇数の場合、-

      • 結果:=(結果*ベース)modモジュラス

    • base:=(base * base)modモジュラス

    • 指数=指数/2

  • 結果を返す

  • メインの方法から、次のようにします-

  • 戻り値power_mod(n、6、m)+ power_mod(n、2、m))mod m + 355)mod m

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
lli power_mod(lli base, lli exponent, lli modulus) {
   base %= modulus;
   lli result = 1;
   while (exponent > 0) {
      if (exponent & 1)
         result = (result * base) % modulus;
      base = (base * base) % modulus;
      exponent >>= 1;
   }
   return result;
}
int main(){
   lli n = 654654, m = 971;
   cout<<(((power_mod(n, 6, m)+power_mod(n, 2, m))% m + 355)% m);
}

入力

84562

出力

450

  1. 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つの基数から別の基数に変換するプロセ

  2. C++の二分探索木で最小値のノードを見つけます

    1つの二分探索木があるとします。二分探索木で最小要素を見つける必要があります。したがって、BSTが以下のような場合- 最小要素は1になります。 左のサブツリーは常に小さい要素を保持していることがわかっています。したがって、左がnullになるまで左のサブツリーを何度もトラバースすると、最小の要素を見つけることができます。 例 #include<iostream> using namespace std; class node{    public:       node *left;