两段有问题的代码,求改第二段
查看原帖
两段有问题的代码,求改第二段
598441
koukou12138楼主2022/6/21 21:54
#include<bits/stdc++.h>
using namespace std;
int year1,month1,day1,year2,month2,day2,year,month,day,num=0;
string a1,a2;
int nian(int yearr)
{
	int i;
	if((yearr%4==0&&yearr%100!=0)||yearr%400==0) i=1;
	else i=0;
	return i;
}
int tiann(int yearr,int monthh)
{
	int i;
	if(monthh==2) i=28+nian(yearr);
	else if(monthh==4||monthh==6||monthh==9||monthh==11) i=30;
	else i=31;
	return i;
}
int main()
{
	string bm,bd,bb;
	cin>>a1>>a2;
	year=stoi(a1.substr(0,4));
	month=stoi(a1.substr(4,2));
	day=stoi(a1.substr(6,2));
	year2=stoi(a2.substr(0,4));
	month2=stoi(a2.substr(4,2));
	day2=stoi(a2.substr(6,2));
	for(;;day++)
	{
		if(year==year2&&month==month2&&day==day2+1) break;
		if(day>tiann(year,month)){day=1;month+=1;}
		if(month>12){month=1;year+=1;}
		if(day<10) bd="0"+to_string(day);
		else bd=to_string(day);
		if(month<10) bm="0"+to_string(month);
		else bm=to_string(month);
		bb=to_string(year)+bm+bd;
		if(bb[7]==bb[0]&&bb[6]==bb[1]&&bb[5]==bb[2]&&bb[4]==bb[3]) {num++;} 
	}
	if(a1==a2&&num!=0) num==1;
	cout<<num;
	return 0;
}

第一段代码,通过字符串-数-字符串的转化与暴力枚举获得答案,但是每一次循环都要进行6次if判定,于是有一个测试点超时

于是我删去了数转字符串的环节,直接对数进行判定和暴力枚举:

#include<bits/stdc++.h>
using namespace std;
int year2,month2,day2,year,month,day,num=0;
string a1,a2;
int nian(int yearr)
{
	int i;
	if((yearr%4==0&&yearr%100!=0)||yearr%400==0) i=1;
	else i=0;
	return i;
}
int tiann(int yearr,int monthh)
{
	int i;
	if(monthh==2) i=28+nian(yearr);
	else if(monthh==4||monthh==6||monthh==9||monthh==11) i=30;
	else i=31;
	return i;
}
int main()
{
	cin>>a1>>a2;
	year=stoi(a1.substr(0,4));
	month=stoi(a1.substr(4,2));
	day=stoi(a1.substr(6,2));
	year2=stoi(a2.substr(0,4));
	month2=stoi(a2.substr(4,2));
	day2=stoi(a2.substr(6,2));
	for(;;day++)
	{
		if(year==year2&&month==month2&&day==day2+1) break;
		if(day>tiann(year,month)){day=1;month+=1;}
		if(month>12){month=1;year+=1;}
	    if(year==month%10*10+month/10*10+day/10*100+day%10*1000) num++;
	}
	if(a1==a2&&num!=0) num==1;
	cout<<num;
	return 0;
}

时间是过了,但是,有三个测试点WA!

最迷的是我下了#1数据然后自己测,输出没有错。

求助大佬指出错误!

2022/6/21 21:54
加载中...