#include<iostream>#include<cstring>#include<algorithm>usingnamespace std;int a, b, c, y1, y2;int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};boolis_leap(int y){if(y %400==0||(y %4==0&& y %100))return1;return0;}intgetdays(int y,int m)//求每个月份的天数{if(m ==2)return months[2]+is_leap(y);return months[m];}intmain(){
cin >> a >> b >> c >> y1 >> y2;int days =0;for(int year =1850; year <= y2; year ++)//从1850/01/01开始枚举天数{if(year < y1)//如果<y1说明不需要输出结果,直接累加天数即可{
days +=(365+is_leap(year));continue;}else{//遍历每一年,对所求的月份单独处理,其余月份之后需要累加天数即可for(int month =1; month <=12; month ++){if(month == a){int w =(days +1)%7;//每个月的第一天是星期几(注:w = [0,1,2,3,4,5,6]int cnt =0;//计数当前是第几个星期cfor(int d =1; d <=getdays(year, month); d ++){if(w == c -1)//因为w移了一位,星期一时w = 0{
cnt ++;if(cnt == b)//当前是第b个星期c,输出结果{printf("%04d/%02d/%02d\n", year, month, d);}}
w =(w +1)%7;//更新w,取值范围为0~6}if(cnt < b)puts("none");//该月不存在b个星期c}
days +=getdays(year, month);}}}return0;}