据说2021年12月2日是一个美好日子,因为这是一个完全对称日!这里认为一个美好日子是一个共8位数字的完全对称日(例如20211202),其中年份占4位,月份、日份都是2位。对于给定的年份,请判断该年是否存在美好日子。
输入格式:
首先输入一个正整数T(<8000)表示测试数据的组数,然后输入T组测试数据。对于每组测试数据,输入一个年份y(2020<y<10000)。
输出格式:
对于每组测试数据,输出一行。若年份y存在美好日子,则输出该日期,否则输出“none”。引号不必输出。
输入样例:
2
2021
2022
输出样例:
20211202
none
本题其实不难,但本人却因为多加一个else一直错误,发一下这个代码以示纪念。
#include<bits/stdc++.h>
using namespace std;
int main(){
int year;
int T;
int month,day;
cin>>T; //输入测试组数
while(T--){
cin>>year;
month=(year%10)*10+year/10%10; //用month记录月份
if(month>12||month==0){
cout<<"none"<<endl;
continue;
}
day=(year/100%10)*10+year/1000; //用day记录日期
if(day==0||day>31){
cout<<"none"<<endl;
continue;
}
else {
if((month==4||month==6||month==9||month==11)&&day>30){ //如果是30天的月
cout<<"none"<<endl;
continue;
}
else if(month==2){ //2月份情况
if((year%4==0 && year%100!=0) ||year%400==0){
if(day>29){
cout<<"none"<<endl;
continue;
}
}
else if(day>28){
cout<<"none"<<endl;
continue;
}
} //所有错误情况已排除,可以输出答案
cout<<year<<year%10<<year/10%10<<year/100%10<<year/1000<<endl;
}
}
return 0;
}