using System;
using System.Collections.Generic;
using System.Linq;
public class Program {
public static bool IsPalindrome(string s) {
return s.SequenceEqual(s.Reverse());
}
public static void Main() {
//这题c#暴力枚举超时了
/*
string start = Console.ReadLine();
string end = Console.ReadLine();
string format = "yyyyMMdd";
//将获得的日期字符串转换为DateTime类型
var startDate = DateTime.ParseExact(start, format, null);
var endDate = DateTime.ParseExact(end, format, null);
int count = 0;
//用AddDays方法获取下一天的DateTime实例,再转换为String判断是否回文
for (var date = startDate; date <= endDate; date = date.AddDays(1)) {
var dateString = date.ToString(format);
if (IsPalindrome(dateString)) {
count++;
//Console.WriteLine($"{dateString} 是回文日期!");
}
}
Console.WriteLine(count); */
//所以应该对每个年份 y,生成回文日期字符串然后判断是否合法
string start = Console.ReadLine(); // e.g., "20110101"
string end = Console.ReadLine(); // e.g., "20111231"
string format = "yyyyMMdd";
int startYear = int.Parse(start.Substring(0, 4));
int endYear = int.Parse(end.Substring(0, 4));
int count = 0;
// 遍历年份
for (int year = startYear; year <= endYear; year++) {
// 生成回文日期字符串
string yearStr = year.ToString("D4");
string reversedYear = new string(yearStr.Reverse().ToArray());
string palindromeDateStr = yearStr + reversedYear; // yyyymmdd
// 跳过范围外的日期
if (string.Compare(palindromeDateStr, start) < 0)
continue;
if (string.Compare(palindromeDateStr, end) > 0)
break;
// 检查是否是合法日期
if (DateTime.TryParseExact(palindromeDateStr, format, null,System.Globalization.DateTimeStyles.None, out _)) {
count++;
}
}
Console.WriteLine(count);
}
}