70分求改
查看原帖
70分求改
1496649
gqy1234楼主2025/7/28 20:04

70分求改

#include<bits/stdc++.h>
using namespace std;
int yf[13]={0,21,28,31,30,31,30,31,31,30,31,30,31};
int rq[9];
bool check()
{
	for(int i=1;i<=4;i++)
	{
		if(rq[i]!=rq[9-i])return 0;
	}
	return 1;
}
int kn,ky,kr;
int wy,wr,wn;
int zs=0,wz=0,sum=0;
void dfs(int n,int y,int r,int step)
{
	if(step==4)
	{
		if(check())sum++;
		zs++;
		return;
	}
	if(step==1)
	{
		for(int i=kn;i<=wn;i++)
		{

			int t=i;wz=0;
			while(wz!=4)
   			{
   				wz++;
   				rq[5-wz]=t%10;
   				t=t/10;
			}
			dfs(i,1,1,step+1);
		}
	}
	if(step==2)
	{
		int yk=1,yj=12;if(zs==0)yk=ky;
		if(n==wn)yj=wy;
		for(int i=yk;i<=yj;i++)
		{
			int t=i;wz=4;
			while(wz!=6)
   			{
   				wz++;
   				rq[7-wz+4]=t%10;
   				t=t/10;
			}
			dfs(n,i,1,step+1);
		}
	}
	if(step==3)
	{
		int rk=1,rj=yf[y];if(zs==0)rk=kr;
		if(n%4==0&&n%100!=0&&y==2)rj+=1;
		if(n%400==0&&y==2)rj+=1;
		if(n==wn&&y==wy)rj=wr;
		for(int i=rk;i<=rj;i++)
		{
			int t=i;wz=6;
			while(wz!=8)
   			{
   				wz++;
   				rq[9-wz+6]=t%10;
   				t=t/10;
			}
			dfs(n,y,i,step+1);
		}
	}
}
int main()
{
	int k,j;
	cin>>k>>j;

	kn = k / 10000;
    ky = (k / 100) % 100;
    kr = k % 100;

    // 解析结束日期
    wn = j / 10000;
    wy= (j / 100) % 100;
    wr = j % 100;
	dfs(0,0,0,1);
	cout<<sum;
	return 0;
}
2025/7/28 20:04
加载中...