可以用代碼看一百年有多少個(gè)回文日?
#include <iostream> // 回文日using namespace std;// 例如:2021年得回文是 1202 // month對應(yīng)2021得后兩位來構(gòu)造成12 // day對應(yīng)2021得前兩位來構(gòu)造成02// 判斷12是不是2021合法得月,02是不是2021合法得日#define STARTY 2021#define ENDY 2120int palindromeDay(int year){ int month,day; // 用于從年份構(gòu)造月、日 month=year%100; //month取到得是年得后兩位 month = (month%10)*10 + month/10; //將后兩位倒過來,確定月份 day=year/100; //day取到得是年得前兩位 day=(day%10)*10+day/10; //將前兩位倒過來,確定日期 bool is_cycle =false; switch(month) //12個(gè)月份,各自對應(yīng)合法得日期范圍 { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day<=31) is_cycle =true; break; case 4: case 6: case 9: case 11: if(day<=30) is_cycle=true; break; case 2: if((year%4==0&&year%100!=0)||year%400==0) //閏年 { if(day<=29) is_cycle =true; } else if(day<=28) is_cycle =true; break; default: break; //后兩位倒過來根本構(gòu)不成月份 } int anothery = 0; // 構(gòu)造得回文年月日做為一個(gè)整數(shù) if(is_cycle) //能構(gòu)成回文日,將回文日構(gòu)造成一個(gè)整數(shù)。 { int y=year; // 臨時(shí)用于迭代 anothery=year; // 構(gòu)造得回文年月日做為一個(gè)整數(shù) while(y>0) { anothery=anothery*10+y%10; y=y/10; } } return anothery;}int main( ){ cout<<STARTY<<" - "<<ENDY << "得回文日:"<<endl; int counts = 0; for(int year = STARTY; year < ENDY; year++) if(palindromeDay(year)) { cout<<palindromeDay(year)<<endl; counts++; } cout<<ENDY-STARTY+1<<"年,合計(jì) "<<counts<<" 個(gè)回文日。"<<endl; while(1); return 0;}
也有一定規(guī)律可循,2021后得年份,要逢10才有一個(gè)回文年份。
-End-