std::div, std::ldiv, std::lldiv
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header <cstdlib>
   | 
||
|   std::div_t     div( int x, int y );  | 
||
|   std::ldiv_t    div( long x, long y );  | 
||
|   std::lldiv_t   div( long long x, long long y );  | 
(since C++11) | |
|   std::ldiv_t   ldiv( long x, long y );  | 
||
|   std::lldiv_t lldiv( long long x, long long y );  | 
(since C++11) | |
|   Defined in header <cinttypes>
   | 
||
|   std::imaxdiv_t div( std::intmax_t x, std::intmax_t y );  | 
(since C++11) | |
|   std::imaxdiv_t imaxdiv( std::intmax_t x, std::intmax_t y );  | 
(since C++11) | |
Computes quotient and remainder simultaneously.
| 
 The quotient is the algebraic quotient with any fractional part discarded (truncated towards zero). The remainder is such that quot * y + rem == x.  | 
(until C++11) | 
| 
 The quotient is the result of the expression x/y. The remainder is the result of the expression x%y.  | 
(since C++11) | 
Contents | 
[edit] Parameters
| x, y | - | integer values | 
[edit] Return value
Structure of type div_t, ldiv_t, ldiv_t, imaxdiv_t defined as:
struct div_t { int quot; // The quotient int rem; // The remainder }; struct ldiv_t { long quot; // The quotient long rem; // The remainder }; struct lldiv_t { long long quot; // The quotient long long rem; // The remainder }; struct imaxdiv_t { std::intmax_t quot; // The quotient std::intmax_t rem; // The remainder };
[edit] Notes
Until C++11, the rounding direction of the quotient and the sign of the remainder in the built-in division and remainder operators was implementation-defined if either of the operands was negative, but it was well-defined in std::div.
[edit] See also
|    remainder of the floating point division operation  (function)  | |