Fonction de puissance en Java


Shofiya Bootwala

Étant donné un nombre et son inverse. Trouvez ce nombre élevé à la puissance de son propre inverse. Remarque : Comme les réponses peuvent être très volumineuses, imprimez le résultat modulo 10 9 + 7.

class Solution
{
        
    long power(int N,int R)
    {
        if(R==0){
            return 1%1000000007;
        }
        else if(R%2==0){
            return power((N*N)%1000000007,R/2)%1000000007;
        }
        return (N%1000000007)*power((N*N)%1000000007,R/2)%1000000007;
    }
   
}

Quand j'exécute ce programme pour 12 élevé à la puissance 21, il renvoie 0. Comment puis-je résoudre ce problème ?

Aayush Saini

Utilisez Modular Exponential pour trouver la puissance du nombre donné. prenons un exemple Power(2,5). La représentation binaire de 5 sera 0101. Chaque fois qu'un bit défini est trouvé, multipliez le résultat avec une puissance de 2 et continuez d'augmenter la puissance de 2 et divisez le nombre par 2.

La complexité temporelle de cette approche : O(logie)

static long power(long x, long y, int p)
  {
    long res = 1; // Initialize result
 
    x = x % p; // Update x if it is more than or
    // equal to p
 
    if (x == 0)
      return 0; // In case x is divisible by p;
 
    while (y > 0)
    {
 
      // Checking the set bit of the number 
      if ((y & 1) != 0)
        //res=(res%p*x%p)%p this is also valid for efficient solution

        res = (res * x) % p;
 
      // Divide the number by 2
      y = y >> 1; 

      x = (x * x) % p;
    }
    return res;
  }
 

Articles connexes


Comment détecter un dépassement de puissance en Java

Claudia: Je sais que java.lang.Math fournit un ensemble de méthodes statiques pour effectuer certaines opérations ( sum, difference, multiply, increment, decrement, negate, toInt), jetant un cas de ArithmeticExceptiondébordement. Y a-t-il quelque chose de simi

C mise en œuvre de la fonction de puissance

Tania Je suis un débutant essayant de comprendre cette fonction C innocente: étant donné deux nombres x et y, cette fonction calcule la puissance de x élevée à y. /* Function to calculate x raised to the power y */ int power(int x, unsigned int y) { if( y

Fonction de puissance de performance R

Peter Quelqu'un a-t-il une astuce pour accélérer le code ci-dessous? En particulier pour éviter les boucles for? J <- 10000 I <- 10000 Y <- matrix(0,J,I) X <- runif(I,0,1) P <- runif(I,0,1) Z <- matrix(runif(n = J*I,0,1),J,I) K <- matrix(runif(n = J*I,0,1),J,I

Comment la fonction de puissance utilisateur de SQL en javascript?

Aucun J'ai besoin d'arrondir les nombres, mais je ne sais pas comment écrire cela en javascript, en SQL, c'est comme ceci: charge/POWER(10,3) Donc, il va l'arrondir sur 3 décimales de manière lorsque j'ai nubmer 2, je vais obtenir 0,002, pour le numéro 2000,

Fonction puissance récursive en C++

leslie J'ai quelques soucis avec cette fonction. La fonction prend a et le calcule à la puissance b de manière récursive. Mon compilateur me donne une erreur de segmentation lorsque je compile ceci, que je ne sais pas comment corriger. Quelqu'un peut-il aider?