⭐ Acwing 466. 回文日期
🤠 枚举月日
0228 回文 8220 年,8220%4 == 0 闰年 28天(真TM巧)
0229 回文 9220 年,9220%4 == 0,闰年二月无 29 (真TM妙)
import java. util. Scanner ;
public class Main
{
static int [ ] days = { 0 , 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ;
public static void main ( String [ ] args)
{
Scanner sc = new Scanner ( System . in) ;
int date1 = sc. nextInt ( ) ;
int date2 = sc. nextInt ( ) ;
long res = 0 ;
for ( int m = 1 ; m <= 12 ; m++ )
for ( int d = 1 ; d <= days[ m] ; d++ )
{
int y = 1000 * ( d % 10 ) + 100 * ( d / 10 ) + 10 * ( m % 10 ) + m / 10 ;
int date = 10000 * y + 100 * m + d;
if ( date >= date1 && date <= date2)
res++ ;
}
System . out. println ( res) ;
}
}
👵 枚举回文日期,判断日期是否合法、符合题目条件
import java. util. * ;
public class Main
{
static int [ ] days = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ;
public static void main ( String [ ] args)
{
Scanner sc = new Scanner ( System . in) ;
int date1 = sc. nextInt ( ) ;
int date2 = sc. nextInt ( ) ;
int res = 0 ;
for ( int i = 1000 ; i < 10000 ; i++ )
{
int date = i, x = i;
while ( x != 0 )
{
date = date * 10 + x % 10 ;
x /= 10 ;
}
if ( date >= date1 && date <= date2)
{
if ( getValue ( date) )
{
res++ ;
}
}
}
System . out. println ( res) ;
}
private static boolean getValue ( int date)
{
int y = date / 10000 ;
int m = date / 100 % 100 ;
int d = date % 100 ;
if ( m <= 0 || m > 12 )
return false ;
if ( m != 2 && d > days[ m] || d < 1 )
return false ;
if ( m == 2 ) {
boolean run = y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ;
if ( run)
{
if ( d < 1 || d > days[ 2 ] + 1 )
return false ;
} else
{
if ( d < 1 || d > days[ 2 ] )
return false ;
}
}
return true ;
}
}
😋 神之打表(不解释,懂自懂)
date[ 1 ] = 10011001 ;
date[ 2 ] = 10100101 ;
date[ 3 ] = 10111101 ;
date[ 4 ] = 10200201 ;
date[ 5 ] = 10211201 ;
date[ 6 ] = 10300301 ;
date[ 7 ] = 10400401 ;
date[ 8 ] = 10500501 ;
date[ 9 ] = 10600601 ;
date[ 10 ] = 10700701 ;
date[ 11 ] = 10800801 ;
date[ 12 ] = 10900901 ;
date[ 13 ] = 11011011 ;
date[ 14 ] = 11100111 ;
date[ 15 ] = 11111111 ;
date[ 16 ] = 11200211 ;
date[ 17 ] = 11211211 ;
date[ 18 ] = 11300311 ;
date[ 19 ] = 11400411 ;
date[ 20 ] = 11500511 ;
date[ 21 ] = 11600611 ;
date[ 22 ] = 11700711 ;
date[ 23 ] = 11800811 ;
date[ 24 ] = 11900911 ;
date[ 25 ] = 12011021 ;
date[ 26 ] = 12100121 ;
date[ 27 ] = 12111121 ;
date[ 28 ] = 12200221 ;
date[ 29 ] = 12211221 ;
date[ 30 ] = 12300321 ;
date[ 31 ] = 12400421 ;
date[ 32 ] = 12500521 ;
date[ 33 ] = 12600621 ;
date[ 34 ] = 12700721 ;
date[ 35 ] = 12800821 ;
date[ 36 ] = 12900921 ;
date[ 37 ] = 13011031 ;
date[ 38 ] = 13100131 ;
date[ 39 ] = 13211231 ;
date[ 40 ] = 13300331 ;
date[ 41 ] = 13500531 ;
date[ 42 ] = 13700731 ;
date[ 43 ] = 13800831 ;
date[ 44 ] = 20011002 ;
date[ 45 ] = 20100102 ;
date[ 46 ] = 20111102 ;
date[ 47 ] = 20200202 ;
date[ 48 ] = 20211202 ;
date[ 49 ] = 20300302 ;
date[ 50 ] = 20400402 ;
date[ 51 ] = 20500502 ;
date[ 52 ] = 20600602 ;
date[ 53 ] = 20700702 ;
date[ 54 ] = 20800802 ;
date[ 55 ] = 20900902 ;
date[ 56 ] = 21011012 ;
date[ 57 ] = 21100112 ;
date[ 58 ] = 21111112 ;
date[ 59 ] = 21200212 ;
date[ 60 ] = 21211212 ;
date[ 61 ] = 21300312 ;
date[ 62 ] = 21400412 ;
date[ 63 ] = 21500512 ;
date[ 64 ] = 21600612 ;
date[ 65 ] = 21700712 ;
date[ 66 ] = 21800812 ;
date[ 67 ] = 21900912 ;
date[ 68 ] = 22011022 ;
date[ 69 ] = 22100122 ;
date[ 70 ] = 22111122 ;
date[ 71 ] = 22200222 ;
date[ 72 ] = 22211222 ;
date[ 73 ] = 22300322 ;
date[ 74 ] = 22400422 ;
date[ 75 ] = 22500522 ;
date[ 76 ] = 22600622 ;
date[ 77 ] = 22700722 ;
date[ 78 ] = 22800822 ;
date[ 79 ] = 22900922 ;
date[ 80 ] = 30011003 ;
date[ 81 ] = 30100103 ;
date[ 82 ] = 30111103 ;
date[ 83 ] = 30200203 ;
date[ 84 ] = 30211203 ;
date[ 85 ] = 30300303 ;
date[ 86 ] = 30400403 ;
date[ 87 ] = 30500503 ;
date[ 88 ] = 30600603 ;
date[ 89 ] = 30700703 ;
date[ 90 ] = 30800803 ;
date[ 91 ] = 30900903 ;
date[ 92 ] = 31011013 ;
date[ 93 ] = 31100113 ;
date[ 94 ] = 31111113 ;
date[ 95 ] = 31200213 ;
date[ 96 ] = 31211213 ;
date[ 97 ] = 31300313 ;
date[ 98 ] = 31400413 ;
date[ 99 ] = 31500513 ;
date[ 100 ] = 31600613 ;
date[ 101 ] = 31700713 ;
date[ 102 ] = 31800813 ;
date[ 103 ] = 31900913 ;
date[ 104 ] = 32011023 ;
date[ 105 ] = 32100123 ;
date[ 106 ] = 32111123 ;
date[ 107 ] = 32200223 ;
date[ 108 ] = 32211223 ;
date[ 109 ] = 32300323 ;
date[ 110 ] = 32400423 ;
date[ 111 ] = 32500523 ;
date[ 112 ] = 32600623 ;
date[ 113 ] = 32700723 ;
date[ 114 ] = 32800823 ;
date[ 115 ] = 32900923 ;
date[ 116 ] = 40011004 ;
date[ 117 ] = 40100104 ;
date[ 118 ] = 40111104 ;
date[ 119 ] = 40200204 ;
date[ 120 ] = 40211204 ;
date[ 121 ] = 40300304 ;
date[ 122 ] = 40400404 ;
date[ 123 ] = 40500504 ;
date[ 124 ] = 40600604 ;
date[ 125 ] = 40700704 ;
date[ 126 ] = 40800804 ;
date[ 127 ] = 40900904 ;
date[ 128 ] = 41011014 ;
date[ 129 ] = 41100114 ;
date[ 130 ] = 41111114 ;
date[ 131 ] = 41200214 ;
date[ 132 ] = 41211214 ;
date[ 133 ] = 41300314 ;
date[ 134 ] = 41400414 ;
date[ 135 ] = 41500514 ;
date[ 136 ] = 41600614 ;
date[ 137 ] = 41700714 ;
date[ 138 ] = 41800814 ;
date[ 139 ] = 41900914 ;
date[ 140 ] = 42011024 ;
date[ 141 ] = 42100124 ;
date[ 142 ] = 42111124 ;
date[ 143 ] = 42200224 ;
date[ 144 ] = 42211224 ;
date[ 145 ] = 42300324 ;
date[ 146 ] = 42400424 ;
date[ 147 ] = 42500524 ;
date[ 148 ] = 42600624 ;
date[ 149 ] = 42700724 ;
date[ 150 ] = 42800824 ;
date[ 151 ] = 42900924 ;
date[ 152 ] = 50011005 ;
date[ 153 ] = 50100105 ;
date[ 154 ] = 50111105 ;
date[ 155 ] = 50200205 ;
date[ 156 ] = 50211205 ;
date[ 157 ] = 50300305 ;
date[ 158 ] = 50400405 ;
date[ 159 ] = 50500505 ;
date[ 160 ] = 50600605 ;
date[ 161 ] = 50700705 ;
date[ 162 ] = 50800805 ;
date[ 163 ] = 50900905 ;
date[ 164 ] = 51011015 ;
date[ 165 ] = 51100115 ;
date[ 166 ] = 51111115 ;
date[ 167 ] = 51200215 ;
date[ 168 ] = 51211215 ;
date[ 169 ] = 51300315 ;
date[ 170 ] = 51400415 ;
date[ 171 ] = 51500515 ;
date[ 172 ] = 51600615 ;
date[ 173 ] = 51700715 ;
date[ 174 ] = 51800815 ;
date[ 175 ] = 51900915 ;
date[ 176 ] = 52011025 ;
date[ 177 ] = 52100125 ;
date[ 178 ] = 52111125 ;
date[ 179 ] = 52200225 ;
date[ 180 ] = 52211225 ;
date[ 181 ] = 52300325 ;
date[ 182 ] = 52400425 ;
date[ 183 ] = 52500525 ;
date[ 184 ] = 52600625 ;
date[ 185 ] = 52700725 ;
date[ 186 ] = 52800825 ;
date[ 187 ] = 52900925 ;
date[ 188 ] = 60011006 ;
date[ 189 ] = 60100106 ;
date[ 190 ] = 60111106 ;
date[ 191 ] = 60200206 ;
date[ 192 ] = 60211206 ;
date[ 193 ] = 60300306 ;
date[ 194 ] = 60400406 ;
date[ 195 ] = 60500506 ;
date[ 196 ] = 60600606 ;
date[ 197 ] = 60700706 ;
date[ 198 ] = 60800806 ;
date[ 199 ] = 60900906 ;
date[ 200 ] = 61011016 ;
date[ 201 ] = 61100116 ;
date[ 202 ] = 61111116 ;
date[ 203 ] = 61200216 ;
date[ 204 ] = 61211216 ;
date[ 205 ] = 61300316 ;
date[ 206 ] = 61400416 ;
date[ 207 ] = 61500516 ;
date[ 208 ] = 61600616 ;
date[ 209 ] = 61700716 ;
date[ 210 ] = 61800816 ;
date[ 211 ] = 61900916 ;
date[ 212 ] = 62011026 ;
date[ 213 ] = 62100126 ;
date[ 214 ] = 62111126 ;
date[ 215 ] = 62200226 ;
date[ 216 ] = 62211226 ;
date[ 217 ] = 62300326 ;
date[ 218 ] = 62400426 ;
date[ 219 ] = 62500526 ;
date[ 220 ] = 62600626 ;
date[ 221 ] = 62700726 ;
date[ 222 ] = 62800826 ;
date[ 223 ] = 62900926 ;
date[ 224 ] = 70011007 ;
date[ 225 ] = 70100107 ;
date[ 226 ] = 70111107 ;
date[ 227 ] = 70200207 ;
date[ 228 ] = 70211207 ;
date[ 229 ] = 70300307 ;
date[ 230 ] = 70400407 ;
date[ 231 ] = 70500507 ;
date[ 232 ] = 70600607 ;
date[ 233 ] = 70700707 ;
date[ 234 ] = 70800807 ;
date[ 235 ] = 70900907 ;
date[ 236 ] = 71011017 ;
date[ 237 ] = 71100117 ;
date[ 238 ] = 71111117 ;
date[ 239 ] = 71200217 ;
date[ 240 ] = 71211217 ;
date[ 241 ] = 71300317 ;
date[ 242 ] = 71400417 ;
date[ 243 ] = 71500517 ;
date[ 244 ] = 71600617 ;
date[ 245 ] = 71700717 ;
date[ 246 ] = 71800817 ;
date[ 247 ] = 71900917 ;
date[ 248 ] = 72011027 ;
date[ 249 ] = 72100127 ;
date[ 250 ] = 72111127 ;
date[ 251 ] = 72200227 ;
date[ 252 ] = 72211227 ;
date[ 253 ] = 72300327 ;
date[ 254 ] = 72400427 ;
date[ 255 ] = 72500527 ;
date[ 256 ] = 72600627 ;
date[ 257 ] = 72700727 ;
date[ 258 ] = 72800827 ;
date[ 259 ] = 72900927 ;
date[ 260 ] = 80011008 ;
date[ 261 ] = 80100108 ;
date[ 262 ] = 80111108 ;
date[ 263 ] = 80200208 ;
date[ 264 ] = 80211208 ;
date[ 265 ] = 80300308 ;
date[ 266 ] = 80400408 ;
date[ 267 ] = 80500508 ;
date[ 268 ] = 80600608 ;
date[ 269 ] = 80700708 ;
date[ 270 ] = 80800808 ;
date[ 271 ] = 80900908 ;
date[ 272 ] = 81011018 ;
date[ 273 ] = 81100118 ;
date[ 274 ] = 81111118 ;
date[ 275 ] = 81200218 ;
date[ 276 ] = 81211218 ;
date[ 277 ] = 81300318 ;
date[ 278 ] = 81400418 ;
date[ 279 ] = 81500518 ;
date[ 280 ] = 81600618 ;
date[ 281 ] = 81700718 ;
date[ 282 ] = 81800818 ;
date[ 283 ] = 81900918 ;
date[ 284 ] = 82011028 ;
date[ 285 ] = 82100128 ;
date[ 286 ] = 82111128 ;
date[ 287 ] = 82200228 ;
date[ 288 ] = 82211228 ;
date[ 289 ] = 82300328 ;
date[ 290 ] = 82400428 ;
date[ 291 ] = 82500528 ;
date[ 292 ] = 82600628 ;
date[ 293 ] = 82700728 ;
date[ 294 ] = 82800828 ;
date[ 295 ] = 82900928 ;
date[ 296 ] = 90011009 ;
date[ 297 ] = 90100109 ;
date[ 298 ] = 90111109 ;
date[ 299 ] = 90200209 ;
date[ 300 ] = 90211209 ;
date[ 301 ] = 90300309 ;
date[ 302 ] = 90400409 ;
date[ 303 ] = 90500509 ;
date[ 304 ] = 90600609 ;
date[ 305 ] = 90700709 ;
date[ 306 ] = 90800809 ;
date[ 307 ] = 90900909 ;
date[ 308 ] = 91011019 ;
date[ 309 ] = 91100119 ;
date[ 310 ] = 91111119 ;
date[ 311 ] = 91200219 ;
date[ 312 ] = 91211219 ;
date[ 313 ] = 91300319 ;
date[ 314 ] = 91400419 ;
date[ 315 ] = 91500519 ;
date[ 316 ] = 91600619 ;
date[ 317 ] = 91700719 ;
date[ 318 ] = 91800819 ;
date[ 319 ] = 91900919 ;
date[ 320 ] = 92011029 ;
date[ 321 ] = 92100129 ;
date[ 322 ] = 92111129 ;
date[ 323 ] = 92200229 ;
date[ 324 ] = 92211229 ;
date[ 325 ] = 92300329 ;
date[ 326 ] = 92400429 ;
date[ 327 ] = 92500529 ;
date[ 328 ] = 92600629 ;
date[ 329 ] = 92700729 ;
date[ 330 ] = 92800829 ;
date[ 331 ] = 92900929 ;