#include <stdio.h>
#include <stdlib.h>
#define MIN 1000
#define MAX 10000
const int min = MIN, max = MAX;
int kiem_tra_nam_nhuan(int nam)
{
return ((nam%4==0&&nam%100!=0)||nam%400==0);
}
int so_ngay_trong_thang( int thang, int nam)
{
int so_ngay ;
int kiem_tra;
switch(thang)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:so_ngay = 31;break;
case 4:
case 6:
case 9:
case 11:so_ngay = 30;break;
case 2:
kiem_tra = kiem_tra_nam_nhuan(nam);
if(kiem_tra==1)
{
so_ngay = 29;
}
else
{
so_ngay = 28;
}
}
return so_ngay;
}
void kiem_tra_hop_le(int ngay, int thang, int nam)
{
if(nam<min||nam>max)
{
printf("%d/%d/%d: không hợp lệ\n",ngay
,thang
,nam
); }
else
{
if(thang<1||thang>12)
{
printf("%d/%d/%d: không hợp lệ\n",ngay
,thang
,nam
); }
else
{
if(ngay<1||ngay>so_ngay_trong_thang(thang,nam))
{
printf("%d/%d/%d: không hợp lệ\n",ngay
,thang
,nam
); }
else
{
printf("%d/%d/%d: hợp lệ\n",ngay
,thang
,nam
); }
}
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("D:\\input.txt","r",stdin
); #endif // ONLINE_JUDGE
int ngay, thang , nam;
scanf("%d/ %d/ %d", &ngay
, &thang
, &nam
); kiem_tra_nam_nhuan(nam);
so_ngay_trong_thang(thang,nam);
kiem_tra_hop_le(ngay,thang,nam);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBNSU4gMTAwMAojZGVmaW5lIE1BWCAxMDAwMApjb25zdCBpbnQgbWluID0gTUlOLCBtYXggPSBNQVg7CmludCBraWVtX3RyYV9uYW1fbmh1YW4oaW50IG5hbSkKewogICByZXR1cm4gKChuYW0lND09MCYmbmFtJTEwMCE9MCl8fG5hbSU0MDA9PTApOwp9CmludCBzb19uZ2F5X3Ryb25nX3RoYW5nKCBpbnQgdGhhbmcsIGludCBuYW0pCnsKICAgIGludCBzb19uZ2F5IDsKICAgIGludCBraWVtX3RyYTsKICAgIHN3aXRjaCh0aGFuZykKICAgIHsKICAgIGNhc2UgMToKICAgIGNhc2UgMzoKICAgIGNhc2UgNToKICAgIGNhc2UgNzoKICAgIGNhc2UgODoKICAgIGNhc2UgMTA6CiAgICBjYXNlIDEyOnNvX25nYXkgPSAzMTticmVhazsKICAgIGNhc2UgNDoKICAgIGNhc2UgNjoKICAgIGNhc2UgOToKICAgIGNhc2UgMTE6c29fbmdheSA9IDMwO2JyZWFrOwogICAgY2FzZSAyOgogICAgICAgIGtpZW1fdHJhID0ga2llbV90cmFfbmFtX25odWFuKG5hbSk7CiAgICAgICAgaWYoa2llbV90cmE9PTEpCiAgICAgICAgewogICAgICAgICAgICBzb19uZ2F5ID0gMjk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHNvX25nYXkgPSAyODsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gc29fbmdheTsKfQp2b2lkIGtpZW1fdHJhX2hvcF9sZShpbnQgbmdheSwgaW50IHRoYW5nLCBpbnQgbmFtKQp7CiAgICBpZihuYW08bWlufHxuYW0+bWF4KQogICAgewogICAgICAgIHByaW50ZigiJWQvJWQvJWQ6IGtow7RuZyBo4bujcCBs4buHXG4iLG5nYXksdGhhbmcsbmFtKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBpZih0aGFuZzwxfHx0aGFuZz4xMikKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJWQvJWQvJWQ6IGtow7RuZyBo4bujcCBs4buHXG4iLG5nYXksdGhhbmcsbmFtKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYobmdheTwxfHxuZ2F5PnNvX25nYXlfdHJvbmdfdGhhbmcodGhhbmcsbmFtKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCIlZC8lZC8lZDoga2jDtG5nIGjhu6NwIGzhu4dcbiIsbmdheSx0aGFuZyxuYW0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCIlZC8lZC8lZDogaOG7o3AgbOG7h1xuIixuZ2F5LHRoYW5nLG5hbSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkKewoKICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgZnJlb3BlbigiRDpcXGlucHV0LnR4dCIsInIiLHN0ZGluKTsKICAgI2VuZGlmIC8vIE9OTElORV9KVURHRQogICBpbnQgbmdheSwgdGhhbmcgLCBuYW07CiAgIHNjYW5mKCIlZC8gJWQvICVkIiwgJm5nYXksICZ0aGFuZyAsICZuYW0pOwogICBraWVtX3RyYV9uYW1fbmh1YW4obmFtKTsKICAgc29fbmdheV90cm9uZ190aGFuZyh0aGFuZyxuYW0pOwogICBraWVtX3RyYV9ob3BfbGUobmdheSx0aGFuZyxuYW0pOwoKICAgIHJldHVybiAwOwp9Cgo=