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