#include <stdio.h>
int Leap(int year) {
if (year % 400 == 0) return 1;
else if (year % 100 == 0) return 0;
else if (year % 4 == 0) return 1;
else return 0;
}
int DayMonth(int year, int month) {
if (month == 4 || month == 6 || month == 9 || month == 11)
return 30;
else if (month == 2)
return Leap(year) ? 29 : 28;
else
return 31;
}
int Zeller(int year, int month, int day) {
if (month == 1 || month == 2) {
month += 12;
year--;
}
int C = year / 100;
int Y = year % 100;
int weekday = ((day + (26 * (month + 1) / 10) + Y + Y / 4 + 5 * C + C / 4) + 5) % 7;
return weekday; // 月曜=0, ..., 日曜=6
}
int main() {
int year, month;
printf("西暦年と月を入力してください(例: 2024 6): "); scanf("%d %d", &year
, &month
);
if (month < 1 || month > 12) {
printf("エラー: 月は1〜12の範囲で入力してください。\n"); return 1;
}
int days = DayMonth(year, month);
int weekday = Zeller(year, month, 1); // その月の1日の曜日
int i;
for (i = 0; i < weekday; i++) {
}
for (i = 1; i <= days; i++) {
if (weekday == 6)
weekday++;
weekday %= 7; // 0〜6 に戻す
}
if (weekday
!= 0) printf("\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKaW50IExlYXAoaW50IHllYXIpIHsKICAgIGlmICh5ZWFyICUgNDAwID09IDApIHJldHVybiAxOwogICAgZWxzZSBpZiAoeWVhciAlIDEwMCA9PSAwKSByZXR1cm4gMDsKICAgIGVsc2UgaWYgKHllYXIgJSA0ID09IDApIHJldHVybiAxOwogICAgZWxzZSByZXR1cm4gMDsKfQoKCmludCBEYXlNb250aChpbnQgeWVhciwgaW50IG1vbnRoKSB7CiAgICBpZiAobW9udGggPT0gNCB8fCBtb250aCA9PSA2IHx8IG1vbnRoID09IDkgfHwgbW9udGggPT0gMTEpCiAgICAgICAgcmV0dXJuIDMwOwogICAgZWxzZSBpZiAobW9udGggPT0gMikKICAgICAgICByZXR1cm4gTGVhcCh5ZWFyKSA/IDI5IDogMjg7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIDMxOwp9CgppbnQgWmVsbGVyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpIHsKICAgIGlmIChtb250aCA9PSAxIHx8IG1vbnRoID09IDIpIHsKICAgICAgICBtb250aCArPSAxMjsKICAgICAgICB5ZWFyLS07CiAgICB9CiAgICBpbnQgQyA9IHllYXIgLyAxMDA7CiAgICBpbnQgWSA9IHllYXIgJSAxMDA7CgogICAgaW50IHdlZWtkYXkgPSAoKGRheSArICgyNiAqIChtb250aCArIDEpIC8gMTApICsgWSArIFkgLyA0ICsgNSAqIEMgKyBDIC8gNCkgKyA1KSAlIDc7CiAgICByZXR1cm4gd2Vla2RheTsgLy8g5pyI5pucPTAsIC4uLiwg5pel5pucPTYKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgeWVhciwgbW9udGg7CiAgICBwcmludGYoIuilv+aapuW5tOOBqOaciOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhO+8iOS+izogMjAyNCA277yJOiAiKTsKICAgIHNjYW5mKCIlZCAlZCIsICZ5ZWFyLCAmbW9udGgpOwoKICAgIGlmIChtb250aCA8IDEgfHwgbW9udGggPiAxMikgewogICAgICAgIHByaW50Zigi44Ko44Op44O8OiDmnIjjga8x44CcMTLjga7nr4Tlm7LjgaflhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGludCBkYXlzID0gRGF5TW9udGgoeWVhciwgbW9udGgpOwogICAgaW50IHdlZWtkYXkgPSBaZWxsZXIoeWVhciwgbW9udGgsIDEpOyAgLy8g44Gd44Gu5pyI44GuMeaXpeOBruabnOaXpQoKICAgIHByaW50ZigiXG4gIOaciCAg54GrICDmsLQgIOacqCAg6YeRICDlnJ8gIOaXpVxuIik7CgoKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgaSA8IHdlZWtkYXk7IGkrKykgewogICAgICAgIHByaW50ZigiICAgIik7CiAgICB9CgoKICAgIGZvciAoaSA9IDE7IGkgPD0gZGF5czsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlM2QiLCBpKTsKICAgICAgICBpZiAod2Vla2RheSA9PSA2KQogICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgd2Vla2RheSsrOwogICAgICAgIHdlZWtkYXkgJT0gNzsgLy8gMOOAnDYg44Gr5oi744GZCiAgICB9CgogICAgaWYgKHdlZWtkYXkgIT0gMCkgcHJpbnRmKCJcbiIpOwoKICAgIHJldHVybiAwOwp9