题意:输入一个人的出生日期,问他过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;
}