int JanFeb( const int m )
{
    return m < 3;
}

int leap( const int y )
{
    return ( !( y & 3 ) ) && ( ( y % 100 ) || ( !( y % 400 ) ) );
}

int dayOfWeek( const int day, const int month, const int year )
{
    return ( int ) ( 365 * year + ( year / 4 ) - ( year / 100 ) + ( year / 400 ) +
                     ( 30.57 * month ) +
                     ( 2 - leap( year ) ) * JanFeb ( month ) + day - 398 ) % 7;
}

            .        .    : 
    if ( year % 4 == 0 && year % 100 == 0 && year % 400 != 0 )
      pMonthLength = monthLength;

 
