Если год является столетним годом, то есть делится на 100 , то он должен делиться на 400 , чтобы называться високосным годом .
Если год не является столетним, то его нужно делить на 4 , чтобы называть его високосным.
Ниже в коде используется двоичный поиск для проверки, делится ли число на другое число или нет (поскольку /
не разрешено, я не уверен, что вы могли бы использовать %
, хотя).
public static boolean isLeapYear(int year){
return isDivisible(1,year,100,year) ? isDivisible(1,year,400,year) : isDivisible(1,year,4,year);
}
private static boolean isDivisible(int low,int high,int divisor,int dividend){
int mid = 0;
while(low <= high){
mid = low + ((high - low) >> 1);
int result = divisor * mid;
if(result == dividend) return true;
else if(result > dividend) high = mid - 1;
else low = mid + 1;
}
return false;
}