返回题解分享
讨论 / 题解分享/ 帖子详情

回文日期(编程题) - 题解

#include<cstdio>
#include<iostream>
using namespace std;


int check(int s){  //数字回文 
	int i=0;
	while(s){
		i=i*10+s%10;
		s/=10;
	}
	return i;
}



int main(){
	
	
	int yearbegin=1921;
	int yearend=2022;
	int flag=0;
	int flag2=0;
	int s=0;
	cin>>s;
	
	int syear=s/10000;
	int smonth=(s %10000)/100;
	int sday=s%100;
//	cout<<syear<<" "<<smonth<<" "<<sday;
	
	
	for(int year=syear;1;year++)
		for(int month=1;month<=12;month++)
			for(int day=1;day<=31;day++){
				if(month==1||month==3||month==5||month==7
				||month==8||month==10||month==12){
					
				}
				else if(month==2){
					if((year%4==0&&year%100!=0||year%400==0)){
						if(day>29){
							break;
						}
					}
					else{
						if(day>28)
						break;
					}
				}
				else{
					if(day>30)
					break;
				}
				
				if(year==syear&&month==smonth&&day==sday) {
					flag=1;
					continue;
				}

				if(flag==1){
					if(flag2==0&&check(year*10000+month*100+day)==year*10000+month*100+day){
						cout<<year*10000+month*100+day<<endl;
						flag2=1;  //回文已出现 
					}
					if(flag2==1&&check(year*10000+month*100+day)==year*10000+month*100+day){
						if(year/100==year%100){   //是否为ababbaba 
							cout<<year*10000+month*100+day;
							return 0;
						}
					}
					
				}
				

			}
	return 0;
}
0 回复 0 转发 0 喜欢 3 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!