CCF-201503-3

让我们先来看一下题目

解题思路
思路很简单,算日子。。。
注意:
1.闰年的判定
2.输出格式
3.把一些代码包装成函数有利于找bug和清晰思路
代码
#include<iostream>
#include<iomanip>
using namespace std;
int isrun(int y){
if(y%4==0&&y%100!=0||y%400==0) return 1;
else return 0;
}
int month[2][12]={
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
int init(int year,int mon){
int day=0;
for(int i=1850;i<year;i++){
if(isrun(i)) day+=366;
else day+=365;
}
int i=isrun(year);
for(int j=0;j<mon-1;j++) day+=month[i][j];
day%=7;
day+=2;
return day;
}
int main(){
int a,b,c,y1,y2;//a--month bth c--week
cin>>a>>b>>c>>y1>>y2;
for(int i=y1;i<=y2;i++){
int week,day;
int flag=isrun(i);
week=init(i,a);
if(week>c) day=8-week+c+(b-1)*7;
else day=8-week+c+(b-2)*7;
if(day<=month[flag][a-1])
cout<<i<<"/"<<setw(2)<<setfill('0')<<a
<<"/"<<setw(2)<<setfill('0')<<day<<endl;
else
cout<<"none"<<endl;
}
return 0;
}
