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; // 나머지
};알고리즘
- long long 타입의 두 숫자를 입력받습니다.
lldiv()함수를 호출합니다.- 결과 구조체에서 몫과 나머지를 꺼내 출력합니다.
예제 코드
다음은 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()가 있습니다. 다루려는 정수의 크기에 맞춰 적절한 함수를 선택하여 사용하면 됩니다.