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

C++에서 가장 큰 N자리 짝수와 홀수 구하기

이 튜토리얼에서는 C++를 사용하여 N자리 숫자 중 가장 큰 짝수와 홀수를 찾는 프로그램을 작성해 보겠습니다. 복잡한 반복문 없이 간단한 수학 공식 하나만으로 해결할 수 있는 문제입니다.

문제 해결 접근 방식

먼저 문제를 해결하는 단계를 살펴보겠습니다.

  • N자리 숫자의 자릿수 n을 초기화합니다.
  • 가장 큰 홀수는 pow(10, n) - 1 입니다. 예를 들어 n이 6이라면 10⁶ - 1인 999999가 됩니다.
  • 가장 큰 짝수는 가장 큰 홀수에서 1을 뺀 값, 즉 pow(10, n) - 2 입니다.

그 이유는 간단합니다. 모든 N자리 숫자 중 가장 큰 수는 9가 n개 나열된 형태인데, 이 값은 항상 홀수이므로 여기서 1을 빼면 가장 큰 짝수가 됩니다.

예제 코드

위 로직을 C++ 코드로 구현해 보겠습니다.

#include <bits/stdc++.h>
using namespace std;
void findEvenAndOddNumbers(int n) {
    int odd = pow(10, n) - 1;
    int even = odd - 1;
    cout << "Even: " << even << endl;
    cout << "Odd: " << odd << endl;
}
int main() {
    int n = 6;
    findEvenAndOddNumbers(n);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Even: 999998
Odd: 999999

참고 사항

n의 값이 커지면 int 타입의 범위를 초과할 수 있으므로, 더 큰 자릿수를 다룰 때는 long long 타입을 사용하는 것이 안전합니다. 또한 pow 함수는 실수형을 반환하므로 정밀도 문제를 피하고 싶다면 직접 9를 n번 출력하거나 정수 연산으로 거듭제곱을 계산하는 방법도 고려할 수 있습니다.

마무리

이처럼 pow(10, n) - 1 공식 하나만 기억하면 N자리 숫자 중 가장 큰 홀수와 짝수를 즉시 구할 수 있으며, 시간 복잡도도 O(1)로 매우 효율적입니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.