求助
  • 板块灌水区
  • 楼主cxsxlg
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/7/19 23:03
  • 上次更新2023/10/27 19:25:19
查看原帖
求助
538258
cxsxlg楼主2022/7/19 23:03
#include<bits/stdc++.h>
using namespace std;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
	int y1,y2;
    cin>>y1>>y2;
    int a=0;
    int y3,y4;
    y3=y1/10000;
    y4=y2/10000;
    for(int i=y3;i<=y4;i++)
    {
        m[2]=28;
        if((i/1000)%4==0&&(i/1000)%100!=0||(i/1000)%400==0)
        {
            m[2]=29;
        }
        int y5=i;
        int y6=0;
        while(2)
        {
            y6=y6*10+y5%10;
            y5/=10;
            if(y5==0)
            {
                break;
            }
        }
        if(y6%100>0 && y6%100<=m[(y6/100)%100] && (y6/100)>0 && (y6/100)%100<13)
        {
            //cout<<i<<" "<<y6<<endl;
            a++;
        }
    }
    /*for(int i=y1;i<=y2;i++)
    {
        m[2]=28;
        if((i/1000)%4==0&&(i/1000)%100!=0||(i/1000)%400==0)
        {
            m[2]=29;
        }
        if(i%100>m[(i/100)%100])//20221101 
        {
            i+=100;
            i=i/100*100+1;
            if((i/100)%100>12)
            {
                i+=10000;
                i=i/1000*1000+101;
            }
            //20221131
        }
        int s=i;
        int y3=0;
        while(2)
        {
            y3=y3*10+s%10;
            s/=10;
            if(s==0)
            {
                break;
            }
        }
        if(i==y3)
        {
            a++;
        }
    }*/
    cout<<a;
    return 0;
}

题目来源 P2010

因为老师叫我重新写一遍嘛(过了超久才叫重写),我写着写着就想到了一个新的思路

就是说它要8位回文日期嘛,我只要前面4位的年份久行了,再把它翻转,看它的日期(月和日)是不是正确的(就是月<13,日<它的所在月的总天数)

但我测了只得63分,这是什么回事啊请问;

如有回答,万分感谢

以下是我以前(老师帮改过的)代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int date1,date2;
	int y,m,d;
	cin>>date1>>date2;
	y=date1/10000;
	m=date1%1000/100;
	d=date1%100;
	int n=0;
	while(1)
	{
		
		if(y*10000+m*100+d>date2)
			{
				cout<<n;
				return 0;
			}
		if(y%10==m/10&&y/10%10==m%10&&y/100%10==d/10&&y/1000==d%10)
		{
			//cout << y*10000+m*100+d << endl;
			n++;
		}
		int mq[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
		if(y%4==0&&y%100!=0||y%400==0)
		{
			mq[2]++;
		}
		d++;
		if(mq[m]<d)
		{
			d=1;
			m++;
			if(m>12)
			{
				m=1;
				y++;
			}
		}
	}
	return 0;
}
2022/7/19 23:03
加载中...