蓝桥杯日期问题
回文日期
#include <iostream>
using namespace std;
bool isLeap(int y){
return (y%4==0&&y%100!=0)||(y%400==0);
}
bool check(int year,int month,int day){//判断是否为合法日期
if(month>12||month==0) return false;
if(day>31||day==0) return false;
if(month==2){
if(isLeap(year)&&day>29)
return false;
if(!isLeap(year)&&day>28)
return false;
}
if(month==4||month==6||month==9||month==11){
if(day>30) return false;
}
return true;
}
int main()
{
int n,i;
cin>>n;
int a,b,c,d,e,f,g,h;//8位数字
int year,month,day;
bool flag=false;
for(i=n+1;i<=99999999;i++){
year=i/10000;
month=(i%10000)/100;
day=i%100;
a=i%10;
b=(i/10)%10;
c=(i/100)%10;
d=(i/1000)%10;
e=(i/10000)%10;
f=(i/100000)%10;
g=(i/1000000)%10;
h=(i/10000000)%10;
if(a==h&&b==g&&c==f&&d==e&&flag==false){
if(check(year,month,day)){
cout<<i<<endl;
flag=true;//只输出一个回文
}
}
if(a==h&&b==g&&c==f&&d==e&&a==c&&b==d){
if(check(year,month,day)){
cout<<i<<endl;
break;
}
}
}
return 0;
}
日期问题
#include <bits/stdc++.h>
using namespace std;
bool isLeap(int y){
return (y%4==0&&y%100!=0)||(y%400==0);
}
bool check(int year,int month,int day){//判断是否为合法日期
if(month>12||month==0) return false;
if(day>31||day==0) return false;
if(month==2){
if(isLeap(year)&&day>29)
return false;
if(!isLeap(year)&&day>28)
return false;
}
if(month==4||month==6||month==9||month==11){
if(day>30) return false;
}
return true;
}
int main()
{
// 请在此输入您的代码
int a,b,c;
scanf("%d/%d/%d",&a,&b,&c);
//cin >> a >> '/' >> b >> '/' >> c;
for(long d = 19600101;d <= 20591231;d++){
int year = d/10000;
int month = (d/100)%100;
int date = d%100;
if(check(year,month,date)){
if((year % 100 == a && month == b && date == c) || (month ==a && date ==b && year % 100 == c) || (date ==a && month ==b &&year % 100 == c)){
printf("%d-%02d-%02d\n",year,month,date);
}
}
}
return 0;
}
##顺子日期
#include <iostream>
using namespace std;
bool check(int month,int day){
if(day==0||day>31)return false;
if(month==2){
if(day>28)return false;
}
if(month==4||month==6||month==8||month==11){
if(day>30)return false;
}
return true;
}
int main()
{
// 请在此输入您的代码
int res=0;
for(int i=0101;i<=1231;i++){
int month=i/100;
int day=i%100;
int a=i/1000;
int b=(i/100)%10;
int c=(i%100)/10;
int d=i%10;
if(check(month,day)){
if((a==b-1&&b==c-1)||(b==c-1&&c==d-1)){
res++;
}
}
}
cout<<res;
return 0;
}
##合法日期
#include <iostream>
using namespace std;
bool check(int month,int day){
if(month==0||month>12)return false;
if(day==0||day>31)return false;
if(month==2){
if(day>28)return false;
}
if(month==4||month==6||month==8||month==11){
if(day>30)return false;
}
return true;
}
int main()
{
// 请在此输入您的代码
int m,n;
cin>>m;
cin>>n;
if(check(m,n)){
cout<<"yes";
}
else{
cout<<"no";
}
return 0;
}
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
int main()
{
// 请在此输入您的代码
string month[] = {"","Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
int m, d;
scanf("%d%d",&m,&d);
//cin >> m >> d;
cout << month[m];
printf("%02d", d);//之前不怎么会用这种方法去表,也就是2位整数
return 0;
}
注意其中的判断日期是否如何格式以及是否是闰年的代码段都是一样的。