Count ways to represent an integer as an exponent

#include
using namespace std;
  

long long int gcd(long long int a,
                  long long int b)
{
    
    while (b > 0) {
  
        long long int rem = a % b;
        a = b;
        b = rem;
    }
  
    
    return a;
}
  

int countNumberOfWays(long long int n)
{
    
    if (n == 1)
        return -1;
  
    
    long long int g = 0;
  
    int power = 0;
  
    
    while (n % 2 == 0) {
        power++;
        n /= 2;
    }
  
    g = gcd(g, power);
  
    
    for (int i = 3; i 2)
        g = gcd(g, 1);
  
    
    
    int ways = 1;
  
    
    power = 0;
  
    while (g % 2 == 0) {
        g /= 2;
        power++;
    }
  
    
    ways *= (power + 1);
  
    
    for (int i = 3; i 2)
        ways *= 2;
  
    
    return ways;
}
  

int main()
{
    int N = 64;
    cout