#include #undef NDEBUG #include int main() { static const char days_in_month[] = {31,30,31,30,31,31,30,31,30,31,31,29}; for (int i=0; i<366; i++) { int months, remdays; remdays = i; for (months=0; days_in_month[months] <= remdays; months++) remdays -= days_in_month[months]; int months2, remdays2; remdays2 = i; months2 = (remdays2 * 535 + 333) >> 14; remdays2 -= (979 * months2 + 16) >> 5; assert(months2==months && remdays2 == remdays); //printf("%d %d %d\n", i, months2, remdays2); } }