您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: