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

숫자 N의 앞 X자리와 뒤 X자리의 절대 차이 구하는 방법

이 글에서는 주어진 숫자 N의 앞 X자리와 뒤 X자리 사이의 절대 차이를 구하는 방법을 알아보겠습니다. 숫자와 X 값이 주어졌을 때, 이 문제는 다음 단계로 해결할 수 있습니다.

먼저 숫자의 전체 자릿수를 구하고, 모듈로 연산자(%)를 사용해 마지막 X자리를 추출합니다. 그다음 숫자를 반복적으로 10으로 나누어 앞 X자리만 남기고 나머지 자릿수를 제거합니다. 마지막으로 두 값의 차이를 계산하여 절댓값 형태로 반환하면 됩니다.

예를 들어 숫자가 N = 568424이고 X = 2라고 가정해 보겠습니다. 이 경우 앞 두 자리는 56, 뒤 두 자리는 24이므로, 차이는 (56 − 24) = 32가 됩니다.

알고리즘

diffFirstLastDigits(N, X)

begin
    p := 10^X
    last := N mod p  // 뒤 X자리 추출
    len := 숫자 N의 자릿수
    while len ≠ X, do
        N := N / 10  // 뒤에서 한 자리씩 제거
        len := len - 1
    done
    first := N  // 앞 X자리 추출
    return |first - last|
end

C++ 구현 예제

아래는 위 알고리즘을 C++로 구현한 코드입니다. 자릿수는 log10 함수를 활용해 손쉽게 계산할 수 있습니다.

#include <iostream>
#include <cmath>
using namespace std;

// 숫자의 자릿수를 구하는 함수
int lengthCount(int n){
    return floor(log10(n) + 1);
}

// 앞 X자리와 뒤 X자리의 절대 차이를 구하는 함수
int diffFirstLastDigits(int n, int x) {
    int first, last, p, len;
    p = pow(10, x);
    last = n % p;  // 뒤 X자리
    len = lengthCount(n);
    while(len != x){
        n /= 10;
        len--;
    }
    first = n;  // 앞 X자리
    return abs(first - last);
}

main() {
    int n, x;
    cout << "Enter number and number of digits from first and last: ";
    cin >> n >> x;
    cout << "Difference: " << diffFirstLastDigits(n,x);
}

실행 결과

Enter number and number of digits from first and last: 568424 2
Difference: 32

입력값 568424와 2에 대해 프로그램은 앞 두 자리(56)와 뒤 두 자리(24)의 차이인 32를 정상적으로 출력하는 것을 확인할 수 있습니다.