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

C++ STL의 lldiv() 함수 – 몫과 나머지를 한 번에 계산하는 방법

C++ STL에서 제공하는 lldiv() 함수는 두 개의 long long 타입 정수를 나누었을 때의 몫(quotient)나머지(remainder)를 동시에 계산하여 반환하는 함수입니다.

일반적으로 나눗셈 연산자(/)와 나머지 연산자(%)를 각각 사용하면 나눗셈 연산이 두 번 수행됩니다. 반면 lldiv() 함수를 사용하면 단 한 번의 호출로 두 가지 결과를 모두 얻을 수 있어 코드가 간결해지고 성능 면에서도 유리합니다.

함수 원형

lldiv() 함수는 <cstdlib> 헤더에 선언되어 있으며, 다음과 같은 형태로 사용됩니다.

lldiv_t lldiv(long long numer, long long denom);

반환 타입인 lldiv_t 구조체는 아래와 같이 정의되어 있습니다.

struct lldiv_t {
    long long quot;  // 몫
    long long rem;   // 나머지
};

알고리즘

  1. long long 타입의 두 숫자를 입력받습니다.
  2. lldiv() 함수를 호출합니다.
  3. 결과 구조체에서 몫과 나머지를 꺼내 출력합니다.

예제 코드

다음은 500을 25로 나누는 예제입니다.

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

int main() {
    long long q = 500LL;
    long long r = 25LL;
    
    lldiv_t res = lldiv(q, r);
    
    cout << "Quotient of " << q << "/" << r << " = " << res.quot << endl;
    cout << "Remainder of " << q << "/" << r << " = " << res.rem << endl;
    
    return 0;
}

실행 결과

Quotient of 500/25 = 20
Remainder of 500/25 = 0

참고: 유사한 함수들

lldiv()와 같은 역할을 하는 함수로는 int 타입 전용의 div(), long 타입 전용의 ldiv()가 있습니다. 다루려는 정수의 크기에 맞춰 적절한 함수를 선택하여 사용하면 됩니다.