【思路】:无论如何都要经过18年,所以问题就是判断18年是否是闰年。注意:2月以后判断从下一年开始的18年,2月以前判断从今年开始的18年。另外还有一个2月29生日的特判。Ps.一年是365天,不是356天!
【AC代码】:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <iomanip> using namespace std; int isLeapYear(int y) { if ((y%4==0&&y%100!=0) || (y%400==0)) return 1; return 0; } int main() { int T = 0; cin >> T; while (T--) { int year = 0, month = 0, day = 0; int i = 0, days = 0; char c; cin >> year >> c >> month >> c >> day; if (2 == month && 29 == day && 0 == isLeapYear(year+18)) { cout << -1 << endl; continue; } if (month > 2) year += 1; for (i = 0; i < 18; i++) { if (isLeapYear(year+i)) days += 366; else days += 365; } cout << days << endl; } return 0; }
原文地址:http://blog.csdn.net/weijj6608/article/details/43911005