#include <stdio.h>
int main(){
int year;
int month;
int day;
int is_leap_year;
int day_of_week;
printf("Enter date (YYYY/MM/DD): ");
scanf("%d %d %d", &year, &month, &day);
if (year % 4 != 0) {
is_leap_year = 0;
} else if (year % 100 != 0) {
is_leap_year = 1;
} else if (year % 400 != 0) {
is_leap_year = 0;
} else {
is_leap_year = 1;
}
// Sanitize!
if (year < 1 || year > 10000) {
printf("Error: Invalid year");
return 0;
}
if (month < 1 || month > 12) {
printf("Error: Invalid month");
return 0;
}
if (day < 1) {
printf("Error: Invalid day");
return 0;
}
if (month == 2) {
if (is_leap_year && day > 29) {
printf("Error: Invalid day");
return 0;
} else if (is_leap_year == 0 && day > 28) {
printf("Error: Invalid day");
return 0;
}
} else if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day > 31) {
printf("Error: Invalid day");
return 0;
} else if((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) {
printf("Error: Invalid day");
return 0;
}
day_of_week = (year % 100);
day_of_week /= 4;
day_of_week += day;
if (month == 1 || month == 10) {
day_of_week += 1;
} else if (month == 2 || month == 3 || month == 11) {
day_of_week += 4;
} else if (month == 5) {
day_of_week += 2;
} else if (month == 6) {
day_of_week += 5;
} else if (month == 8) {
day_of_week += 3;
} else if (month == 9 || month == 12) {
day_of_week += 6;
}
if (is_leap_year == 1) {
if (month == 1 || month == 2) {
day_of_week -= 1;
}
}
day_of_week -= ((year / 100) % 4) * 2;
day_of_week += (year % 100);
day_of_week += 12;
day_of_week = day_of_week % 7;
printf("%d/%d/%d: ", year, month, day);
if (day_of_week == 0) {
printf("Sunday");
} else if (day_of_week == 1) {
printf("Monday");
} else if (day_of_week == 2) {
printf("Tuesday");
} else if (day_of_week == 3) {
printf("Wednesday");
} else if (day_of_week == 4) {
printf("Thursday");
} else if (day_of_week == 5) {
printf("Friday");
} else if (day_of_week == 6) {
printf("Saturday");
}
printf("\n");
return 0;
}