因為有8個字符,所以可得出每一年只有一個回文日期。
因此只要判斷每一年就行了。
做法:
我們先把年倒過來,例如2018年就倒為8102,就得出8102就是回文日期的后四個字符,我們只要判斷一下有沒有這個月份和這個日期。
具體做法看AC代碼
#include<bits/stdc++.h>
using namespace std;
int ans=0;
int montht[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//各個月份的天數
int main()
{int year,month,day;int year2,month2,day2;string s1,s2;cin>>s1>>s2;year=(s1[0]-'0')*1000+(s1[1]-'0')*100+(s1[2]-'0')*10+s1[3]-'0';//把起始年份單獨提取出來year2=(s2[0]-'0')*1000+(s2[1]-'0')*100+(s2[2]-'0')*10+s2[3]-'0';//把終止年份單獨提取出來for(int i=year;i<=year2;i++)//用年來循環{if((i%4==0&&i%100!=0)||i%400==0)//判斷是否為閏年{montht[2]=29;}else montht[2]=28;if((i%10)*10+i/10%10<=12)//將年的后兩位倒過來,并判斷是否大于12。{if((i/100%10)*10+i/1000<=montht[(i%10)*10+i/10%10])//判斷前兩位倒回來是不是小于該月份的日期{ans++;//答案加1}}}cout<<ans<<endl;//輸出結果return 0;
}