打印日期
题目
代码
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int ISYEAP(int x){ 6 if((x%100!=0 && x % 4 == 0) || (x % 400 == 0) )return 1; 7 else return 0; 8 } 9 int dayOfMonth[13][2] = { 10 0,0, 11 31,31, 12 28,29, 13 31,31, 14 30,30, 15 31,31, 16 30,30, 17 31,31, 18 31,31, 19 30,30, 20 31,31, 21 30,30, 22 31,31 23 }; 24 typedef struct Date{ 25 int Day; 26 int Month; 27 int Year; 28 void nextDay(){ 29 Day++; 30 if(Day > dayOfMonth[Month][ISYEAP(Year)]){ 31 Day = 1; 32 Month++; 33 if(Month > 12){ 34 Month = 1; 35 Year++; 36 } 37 } 38 } 39 }Date; 40 41 int buf[3001][13][32]; 42 int main(){ 43 Date tmp; 44 tmp.Year = 0,tmp.Month = 1,tmp.Day = 1; 45 int cnt = 0; 46 while(tmp.Year != 3001){ 47 buf[tmp.Year][tmp.Month][tmp.Day] = cnt; 48 tmp.nextDay(); 49 cnt++; 50 } 51 int y; 52 int days; 53 while(scanf("%d%d",&y,&days) != EOF){ 54 for(int i = 1;i <= 12;i++){ 55 for(int j = 1;j <= 31;j++){ 56 if(buf[y][i][j] - buf[y][1][1] + 1 == days){ 57 printf("%d-%02d-%02d\n",y,i,j); 58 } 59 } 60 } 61 } 62 return 0; 63 }