Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 aⁿ과 bⁿ 중 더 큰 값 찾기

개요

이 튜토리얼에서는 C++을 활용해 aⁿbⁿ 중 어느 값이 더 큰지 판별하는 프로그램을 살펴봅니다.

세 개의 정수 a, b, n이 주어졌을 때, aⁿ과 bⁿ을 계산한 결과 중 더 큰 값을 찾아 출력하는 것이 과제입니다.

접근 방법

n이 커지면 aⁿ과 bⁿ을 직접 계산하는 과정에서 오버플로우가 발생할 위험이 있습니다. 다행히 두 값을 실제로 구하지 않아도 비교만으로 결과를 얻을 수 있으며, 핵심은 지수 n의 홀짝 여부입니다.

  • n이 짝수인 경우: 음수를 짝수 번 곱하면 양수가 되므로, a와 b의 절댓값(|a|와 |b|)을 비교하면 됩니다.
  • n이 홀수인 경우: 거듭제곱 후에도 부호가 유지되므로, a와 b를 있는 그대로 비교합니다.

예를 들어 a = -5, b = 3일 때 n = 2라면 (-5)² = 25이고 3² = 9이므로 aⁿ이 더 큽니다. 반면 n = 3이라면 (-5)³ = -125이고 3³ = 27이므로 bⁿ이 더 커집니다.

예제 코드

#include <bits/stdc++.h>
using namespace std;
// 더 큰 값을 찾는 함수
void findGreater(int a, int b, int n){
   if (!(n & 1)) {
      a = abs(a);
      b = abs(b);
   }
   if (a == b)
      cout << "a^n is equal to b^n";
   else if (a > b)
      cout << "a^n is greater than b^n";
   else
      cout << "b^n is greater than a^n";
}
int main(){
   int a = 12, b = 24, n = 5;
   findGreater(a, b, n);
   return 0;
}

실행 결과

b^n is greater than a^n

코드 설명

findGreater 함수는 먼저 !(n & 1) 조건으로 n이 짝수인지 확인합니다. 비트 AND 연산자를 사용해 n의 최하위 비트를 검사하는 방식으로, n이 짝수라면 abs() 함수를 통해 a와 b를 절댓값으로 변환합니다.

이후 a와 b의 크기를 단순 비교하여 세 가지 경우(aⁿ = bⁿ, aⁿ > bⁿ, bⁿ > aⁿ)에 맞는 메시지를 출력합니다.

예제에서는 a = 12, b = 24, n = 5가 주어졌습니다. n = 5는 홀수이므로 절댓값 변환 없이 12와 24를 직접 비교하게 되고, 12 < 24이므로 "b^n is greater than a^n"이 출력됩니다.