Run ID:148121

提交时间:2026-02-09 17:04:58

#include <iostream> #include <ctime> #include <sstream> #include <iomanip> // 判断是否为闰年 bool isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } return false; } int calculateDays(int birthYear, int birthMonth, int birthDay) { int targetYear = birthYear + 18; int targetMonth = birthMonth; int targetDay = birthDay; if (birthMonth == 2 && birthDay == 29 &&!isLeapYear(targetYear)) { return -1; } struct std::tm birthTime = {0}; struct std::tm targetTime = {0}; birthTime.tm_year = birthYear - 1900; birthTime.tm_mon = birthMonth - 1; birthTime.tm_mday = birthDay; targetTime.tm_year = targetYear - 1900; targetTime.tm_mon = targetMonth - 1; targetTime.tm_mday = targetDay; ime_t birthSec = std::mktime(&birthTime); time_t targetSec = std::mktime(&targetTime); if (birthSec == -1 || targetSec == -1) { return -1; } double diff = std::difftime(targetSec, birthSec) / (60 * 60 * 24); return static_cast<int>(diff); } int main() { int T; cin >> T; while (T--) { int year, month, day; char dash1, dash2; cin >> year >> dash1 >> month >> dash2 >> day; int days = calculateDays(year, month, day); cout << days << endl; } return 0; }