本方法所有样例未通过,然后重新整理思路,重新修改代码。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, i, day1, day, x, month, flag=0;
cin>>n;
x=n/10000;//代表年份
//cout<<x<<endl;
//缺判断当年是否有满足的
//以下是输出了第一个数据
for(i=x+1; ;i++){
int a1=i%10;
int a2=i/10%10;
int a3=i/100%10;
int a4=i/1000;
if((a1*10+a2)<=12&&(a1*10+a2)>0&&(a3*10+a4)<=31&&(a3*10+a4)>0){
month=a1*10+a2;
day1=a3*10+a4;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
day=31;
}
else if(month==2){
if(i%4==0&&i%100!=0||i%400==0){
day=29;
}
else{
day=28;
}
}
else{
day=30;
}
if(day1<day){
//cout<<a1<<" "<<a2<<" "<<a3<<" "<<a4<<endl;
//cout<<month<<endl;
//cout<<day1<<endl;
printf("%d%02d%02d\n", i, month, day1);
break;
}
}
}
//以下是输出的第二行
for(i=x+1; ;i++){
int a1=i%10;
int a2=i/10%10;
int a3=i/100%10;
int a4=i/1000;
if(a1==a3&&a2==a4&&(a1*10+a2)<=12&&(a1*10+a2)>0&&(a3*10+a4)<=31&&(a3*10+a4)>0){
month=a1*10+a2;
day1=a3*10+a4;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
day=31;
}
else if(month==2){
if(i%4==0&&i%100!=0||i%400==0){
day=29;
}
else{
day=28;
}
}
else{
day=30;
}
if(day1<day){
//cout<<a1<<" "<<a2<<" "<<a3<<" "<<a4<<endl;
//cout<<month<<endl;
//cout<<day1<<endl;
printf("%d%02d%02d\n", i, month, day1);
break;
}
}
}
return 0;
}
正确答案:在开始写代码时,我误把N的范围当作最后输出的范围,实际最后的输出范围会有比N的范围大的情况。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, i, day1, day, x, month, flag=0;
cin>>n;
//以下是输出了第一个数据
for(i=n+1; ;i++){
int a1=i%10;
int a2=i/10%10;
int a3=i/100%10;
int a4=i/1000%10;
int year=i/10000;
if((a4*10+a3)<=12&&(a2*10+a1)<=31&&year==a1*1000+a2*100+a3*10+a4&&(a4*10+a3)>0&&(a2*10+a1)>0){
month=a4*10+a3;
day1=a2*10+a1;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
day=31;
}
else if(month==2){
if((year%4==0&&year%100!=0)||year%400==0){
day=29;
}
else{
day=28;
}
}
else{
day=30;
}
if(day1<day){
printf("%d\n", i);
break;
}
}else{
continue;
}
}
//以下是输出的第二行
for(i=n+1; ;i++){
int a1=i%10;
int a2=i/10%10;
int a3=i/100%10;
int a4=i/1000%10;
int year=i/10000;
if(a1*10+a2==a3*10+a4&&year==a1*1000+a2*100+a3*10+a4&&(a4*10+a3)<=12&&(a2*10+a1)<=31&&(a4*10+a3)>0&&(a2*10+a1)>0){
month=a4*10+a3;
day1=a2*10+a1;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
day=31;
}
else if(month==2){
if((year%4==0&&year%100!=0)||year%400==0){
day=29;
}
else{
day=28;
}
}
else{
day=30;
}
if(day1<day){
printf("%d", i);
break;
}
}else{
continue;
}
}
return 0;
}