hdu 1201(日期计算)
/* Name: 日期计算 Author: Try_86 Date: 10/04/12 21:42 */ #include <cstdio> #include <iostream> using namespace std; int days[13] = {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; bool isLeap(int year) {//判断闰年 if ((year%400==0) || (year%4==0&&year%100!=0)) return true; return false; } int solve(int year, int month, int day) { if (isLeap(year) && month==2 && day==29 && !isLeap(year+18)) return -1; int sumDays = days[month] + day; if (isLeap(year+18) && month>2) ++sumDays; for (int i=1; i<18; ++i) { sumDays += 365; if (isLeap(year+i)) ++sumDays; } if (isLeap(year)) sumDays += 366 - days[month] - day; else sumDays += 365 - days[month] - day; if (isLeap(year) && month>2) --sumDays; return sumDays; } int main() { int t; scanf ("%d", &t); while (t--) { int year, month, day; scanf ("%d-%d-%d", &year, &month, &day); int ans = solve(year, month, day); printf ("%d\n", ans); } return 0; }