1 条题解

  • 0
    @ 2023-6-3 11:42:32
    #include <bits/stdc++.h>
    using namespace std;
    int day[15]={0,31,0,31,30,31,30,31,31,30,31,30,31};
    //返回x是否合理 
    bool f(int x){
    	//取出年月日 
    	int y = x/10000;
    	int m = x/100%100;
    	int d = x%100;
    	//判断月份是否合法 
    	if(m<1||m>12)
    		return false;
    	//校准2月天数 
    	if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
    		day[2]=29;
    	else
    		day[2]=28;
    	//判断日期是否合法 
    	if(d<1||d>day[m])
    		return false;
    	return true;
    }
    //返回x是否回文 
    bool g(int x){
    	if( x%10==x/10000000%10&&
    		x/10%10==x/1000000%10&&
    		x/100%10==x/100000%10&&
    		x/1000%10==x/10000%10)
    		return true;
    	else
    		return false; 
    } 
    int main()
    {
    	int date1,date2;
    	cin>>date1>>date2;//00000001~99999999
    	int cnt=0;
    	//合理的日期数量:<9999*12*31
    	//回文日期数量: <9999
    	for(int y=0000;y<=9999;y++)
    	{
    		int i = y*10000;
    		i+=(y/1000);
    		i+=(y/100%10)*10;
    		i+=(y/10%10)*100;
    		i+=(y%10)*1000;
    		//i合不合理
    		if(!f(i))
    			continue; 
    		/*
    		//i是不是回文
    		if(!g(i))
    			continue;
    		*/
    		//i是不是在范围内
    		if(i<date1||i>date2)
    			continue;
    		//计数器++
    		cnt++;		
    	}
    	cout<<cnt<<"\n";
    	return 0;
    }
    
    • 1

    信息

    ID
    101
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    86
    已通过
    24
    上传者