Полный квадрат и идеальный куб

Я рекомендую XOM. Его API ясен и интуитивен.

8
задан Douglas B. Staple 23 March 2013 в 04:45
поделиться

2 ответа

No, but it's easy to write one:

bool is_perfect_square(int n) {
    if (n < 0)
        return false;
    int root(round(sqrt(n)));
    return n == root * root;
}

bool is_perfect_cube(int n) {
    int root(round(cbrt(n)));
    return n == root * root * root;
}
13
ответ дан 5 December 2019 в 07:35
поделиться

sqrt (x) , или, как правило, pow (x, 1./2) или pow (x, 1./3)

Например:

int n = 9;
int a = (int) sqrt((double) n);
if(a * a == n || (a+1) * (a+1) == n)  // in case of an off-by-one float error
    cout << "It's a square!\n";

Изменить: или в целом:

bool is_nth_power(int a, int n) {
  if(n <= 0)
    return false;
  if(a < 0 && n % 2 == 0)
    return false;
  a = abs(a);

  int b = pow(a, 1. / n);
  return pow((double) b, n) == a || pow((double) (b+1), n) == a;
}
6
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: