Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,880 questions

51,806 answers

573 users

How to write a function that calculates power in O(log(n)) time with C++

3 Answers

0 votes
#include <iostream>

long power(long num, long n) {
 	if (n == 0) {
 	    return 1;
 	}
  	
  	long tmp = power(num, n / 2);
  	tmp = tmp * tmp;
  	if (n % 2 == 0) {
  	    return tmp;
  	}
  	
  	return tmp * num;
}

int main() {
    for (int i = 0; i < 15; i++) {
        std::cout << "i = " << i << " power = " << power(2, i) << "\n";
    }
}


        
/*
run:
        
i = 0 power = 1
i = 1 power = 2
i = 2 power = 4
i = 3 power = 8
i = 4 power = 16
i = 5 power = 32
i = 6 power = 64
i = 7 power = 128
i = 8 power = 256
i = 9 power = 512
i = 10 power = 1024
i = 11 power = 2048
i = 12 power = 4096
i = 13 power = 8192
i = 14 power = 16384
     
*/

 



answered Dec 14, 2024 by avibootz
0 votes
#include <iostream>
 
long power(long num, long n) {
    if (n == 0) {
        return 1;
    }
 
    if (n == 1) {
        return num;
    }
     
    if (n % 2 == 0) {
        return power(num * num, n / 2);
    } else {
        return num * power(num, n - 1);
    } 
}
 
int main() {
    for (int i = 0; i < 15; i++) {
        std::cout << "i = " << i << " power = " << power(2, i) << "\n";
    }
}
 
 
         
/*
run:
         
i = 0 power = 1
i = 1 power = 2
i = 2 power = 4
i = 3 power = 8
i = 4 power = 16
i = 5 power = 32
i = 6 power = 64
i = 7 power = 128
i = 8 power = 256
i = 9 power = 512
i = 10 power = 1024
i = 11 power = 2048
i = 12 power = 4096
i = 13 power = 8192
i = 14 power = 16384
      
*/

 

 



answered Dec 14, 2024 by avibootz
edited Dec 14, 2024 by avibootz
0 votes
#include <iostream>

long power(long num, long n) {
    if (n == 0) {
        return 1;
    }

    if (n % 2 == 0) {
        return power(num * num, n / 2);
    } else {
        return num * power(num * num, n / 2);
    }
}

int main() {
    for (int i = 0; i < 15; i++) {
        std::cout << "i = " << i << " power = " << power(2, i) << "\n";
    }
}


        
/*
run:

i = 0 power = 1
i = 1 power = 2
i = 2 power = 4
i = 3 power = 8
i = 4 power = 16
i = 5 power = 32
i = 6 power = 64
i = 7 power = 128
i = 8 power = 256
i = 9 power = 512
i = 10 power = 1024
i = 11 power = 2048
i = 12 power = 4096
i = 13 power = 8192
i = 14 power = 16384
     
*/

 



answered Dec 14, 2024 by avibootz

Related questions

...