据说2021年12月2日是一个美好日子,因为这是一个完全对称日!这里认为一个美好日子是一个共8位数字的完全对称日(例如20211202),其中年份占4位,月份、日份都是2位。对于给定的年份,请判断该年是否存在美好日子。
输入格式:
首先输入一个正整数T(<8000)表示测试数据的组数,然后输入T组测试数据。对于每组测试数据,输入一个年份y(2020<y<10000)。
输出格式:
对于每组测试数据,输出一行。若年份y存在美好日子,则输出该日期,否则输出none
。
输入样例:
3
2021
2022
2100
输出样例:
20211202
none
none
说明:
2021年12月2日,顺利接娃放学,晚饭没获差评。谨以此题纪念这个美好日子。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main() {
int t, year;
int arr[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int arr1[4]; //定义一个数组来存放年份的逆序
int years; //用来存放年份备用
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("%d\n", &year);
years = year;
int k = 0;
while (years > 0) //进行循环,把年份逆置放进数组
{
int x = years % 10;
years = years / 10;
arr1[k] = x;
k++;
}
if ((year % 4 == 0 && year % 100 != 0) ||year % 400 == 0) { //判断是否闰年
arr[2] = 29;
}
int moths =
((arr1[0] * 10) +arr1[1]); //这是计算如果是美好日子那么年份的的逆值后的两位就是月份
int days = ((arr1[2] * 10) + arr1[3]); //这个同理
if (moths <= 12 &&days <=arr[moths]) //这个判断条件是通过逆值后的年份算出月分<=12,而且逆置后的天数是否在月份天数的范围内
{
printf("%d%02d%02d\n", year, moths, days);
} else
{
printf("none\n");
}
}
return 0;
}