hdu - 1201 - 18岁生日
2013-02-16 02:02
441 查看
题意:输入一个人的出生日期,问他过18岁生日时经过了多少天。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1201
——>>小心就好。
#include <iostream>
#include <cstdio>
using namespace std;
bool run(int y) //判断闰年
{
return (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0));
}
int days(bool r, int m) //计算各月天数
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11: return 30;
case 2:
{
if(r) return 29;
else return 28;
}
default: return -1;
}
}
int main()
{
int T, y, m, d, i;
cin>>T;
while(T--)
{
scanf("%d-%d-%d", &y, &m, &d);
int sum = 0;
bool yy = run(y);
if(yy && m == 2 && d == 29 && !run(y+18))
{
printf("-1\n");
continue;
}
sum += days(yy, m) - d;
for(i = m+1; i <= 12; i++)
sum += days(yy, i);
for(i = y+1; i <= y+17; i++)
if(run(i)) sum += 366;
else sum += 365;
y += 18;
yy = run(y);
sum += d;
for(i = 1; i < m; i++) sum += days(yy, i);
printf("%d\n", sum);
}
return 0;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1201
——>>小心就好。
#include <iostream>
#include <cstdio>
using namespace std;
bool run(int y) //判断闰年
{
return (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0));
}
int days(bool r, int m) //计算各月天数
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: return 31;
case 4:
case 6:
case 9:
case 11: return 30;
case 2:
{
if(r) return 29;
else return 28;
}
default: return -1;
}
}
int main()
{
int T, y, m, d, i;
cin>>T;
while(T--)
{
scanf("%d-%d-%d", &y, &m, &d);
int sum = 0;
bool yy = run(y);
if(yy && m == 2 && d == 29 && !run(y+18))
{
printf("-1\n");
continue;
}
sum += days(yy, m) - d;
for(i = m+1; i <= 12; i++)
sum += days(yy, i);
for(i = y+1; i <= y+17; i++)
if(run(i)) sum += 366;
else sum += 365;
y += 18;
yy = run(y);
sum += d;
for(i = 1; i < m; i++) sum += days(yy, i);
printf("%d\n", sum);
}
return 0;
}
相关文章推荐
- hdu 1201 18岁生日
- hdu 1201 18岁生日
- HDU 1201 18岁生日
- hdu 1201:18岁生日(水题,闰年)
- HDU 1201-18岁生日(字符串)
- (hdu) 1201 18岁生日&&…
- HDU 1201 18岁生日
- 【HDU】1201 18岁生日
- hdu-1201-18岁生日
- HDU-1201-18岁生日
- HDU 1201 18岁的生日
- hdu_1201 18岁生日
- hdu 1201 18岁生日
- hdu 1201 18岁生日
- HDU-1201-18岁生日(Java AC利用Calendar类)
- HDU: 1201-18岁生日
- HDU 1201 18岁生日
- HDU 1201 18岁的生日
- HdU 1201-18岁生日
- HDU 1201 18岁生日