1 条题解
-
1
#include <bits/stdc++.h> using namespace std; bool isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } int getDaysINMonth(int year ,int month) { if(month == 2) { return isLeapYear(year)? 29 : 28; } if(month == 4 || month == 6 || month == 9 || month == 11) { return 30; } return 31; } void nextDay(int &year,int & month,int & day) { day++; if(day>getDaysINMonth(year,month)) { day = 1; month++; if(month>12) { month = 1; year++; } } } bool isPalindrome(int year,int month,int day) { char date[9]; sprintf(date,"%04d%02d%02d",year,month,day); string s(date); string reversed(s.rbegin(),s.rend()); return s == reversed; } int main() { int startDate, endDate; cin >> startDate >> endDate; // 提取起始日期的年、月、日 int startYear = startDate / 10000; int startMonth = (startDate / 100) % 100; int startDay = startDate % 100; // 提取结束日期的年、月、日 int endYear = endDate / 10000; int endMonth = (endDate / 100) % 100; int endDay = endDate % 100; int count = 0; // 回文日期计数器 // 遍历日期范围 while (true) { // 检查当前日期是否是回文日期 if (isPalindrome(startYear, startMonth, startDay)) { count++; } // 如果当前日期等于结束日期,退出循环 if (startYear == endYear && startMonth == endMonth && startDay == endDay) { break; } // 日期增加一天 nextDay(startYear, startMonth, startDay); } cout << count << endl; return 0; }
- 1
信息
- ID
- 6062
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 113
- 已通过
- 35
- 上传者