回文日
今天是2018年10月2日。2018102,倒着读也是一样的。我们定义这样的节日为回文日。
求回文日
#include <cstdio> #include<cstdlib> using namespace std; bool panduan(int x) { int y=0; int temp=x; while(temp!=0) { y=y*10+temp%10; temp=temp/10; } if(x==y) { return true; } else { return false; } } bool run(int year) { if((year%4==0&&year%100!=0)||year%400==0) { return true; } else { return false; } } int getwei(int x) { int res=0; while(x!=0) { x=x/10; res++; } return res; } typedef struct node { int year; int month; int day; }node; int tuntores(node a) { int res=0; int temp=getwei(a.month); res+=a.year; for(int i=0;i<temp;i++) { res*=10; } res+=a.month; temp=getwei(a.day); for(int i=0;i<temp;i++) { res*=10; } res+=a.day; return res; } node nextday(node a) { a.day++; if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12) { if(a.day>31) { a.month++; a.day=1; } } else if(a.month==2) { if(run(a.year)) { if(a.day>29) { a.month=3; a.day=1; } } else { if(a.day>28) { a.month=3; a.day=1; } } } else { if(a.day>30) { a.month++; a.day=1; } } if(a.month>12) { a.month=1; a.year++; } return a; } int main() { node today; today.year=2018; today.month=10; today.day=3; printf("最近100个回文日:\n"); for(int i=1;i<101;i++) { while(panduan(tuntores(today))==0) { today=nextday(today); } printf("%4d年%2d月%2d日 | \t",today.year,today.month,today.day); today=nextday(today); if(i%5==0) { printf("\n"); } } getchar(); getchar(); return 0; }