/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static final int daysInMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
{
long start
= System.
currentTimeMillis(); for (int i=0;i<1000000;i++) {
for (int m=1;m<=12;m++){
days1(m);
}
}
long end
= System.
currentTimeMillis(); System.
out.
println(end
-start
);
start
= System.
currentTimeMillis(); for (int i=0;i<1000000;i++) {
for (int m=1;m<=12;m++){
days2(m);
}
}
end
= System.
currentTimeMillis(); System.
out.
println(end
-start
);
start
= System.
currentTimeMillis(); for (int i=0;i<1000000;i++) {
for (int m=1;m<=12;m++){
days3(m);
}
}
end
= System.
currentTimeMillis(); System.
out.
println(end
-start
); }
public static int days1(int m) {
return (0xEEFBB3>>(m-1)*2 & 0b11) + 28;
}
public static int days2(int x) {
return 28 + (x
+ (int)Math.
floor(x
/8)) % 2 + 2 % x
+ 2 * (int)Math.
floor(1/x
); }
public static int days3(int month) {
return daysInMonth[month];
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBkYXlzSW5Nb250aFtdID0gezAsMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OwoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkJZm9yIChpbnQgaT0wO2k8MTAwMDAwMDtpKyspIHsKCQkJZm9yIChpbnQgbT0xO208PTEyO20rKyl7CgkJCQlkYXlzMShtKTsKCQkJfQoJCX0KCQlsb25nIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihlbmQtc3RhcnQpOwoJCQoJCXN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkJZm9yIChpbnQgaT0wO2k8MTAwMDAwMDtpKyspIHsKCQkJZm9yIChpbnQgbT0xO208PTEyO20rKyl7CgkJCQlkYXlzMihtKTsKCQkJfQoJCX0KCQllbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oZW5kLXN0YXJ0KTsKCQkKCQlzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwoJCWZvciAoaW50IGk9MDtpPDEwMDAwMDA7aSsrKSB7CgkJCWZvciAoaW50IG09MTttPD0xMjttKyspewoJCQkJZGF5czMobSk7CgkJCX0KCQl9CgkJZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgkJU3lzdGVtLm91dC5wcmludGxuKGVuZC1zdGFydCk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IGRheXMxKGludCBtKSB7CgkJcmV0dXJuICgweEVFRkJCMz4+KG0tMSkqMiAmIDBiMTEpICsgMjg7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IGRheXMyKGludCB4KSB7CgkJcmV0dXJuIDI4ICsgKHggKyAoaW50KU1hdGguZmxvb3IoeC84KSkgJSAyICsgMiAlIHggKyAyICogKGludClNYXRoLmZsb29yKDEveCk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IGRheXMzKGludCBtb250aCkgewoJCXJldHVybiBkYXlzSW5Nb250aFttb250aF07CQoJfQp9