试题编号: | 201509-2 |
试题名称: | 日期计算 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 输入格式 输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。 输出格式 输出两行,每行一个整数,分别表示答案的月份和日期。 样例输入 2015 样例输出 3 样例输入 2000 样例输出 2 |
#include<bits/stdc++.h>
using namespace std;
int ju[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}};
bool judge(int n)
{
if(n%4==0&&n%100!=0||n%400==0)
return 1;
return 0;
}
int jisuan(int a,int b,int c,int y)
{
int count=0,d,x;
for(int i=1850;i<y;i++)
{
if(judge(i))
count+=366;
else
count+=365;
}
int k=judge(y);
for(int i=0;i<a-1;i++)
{
count+=ju[k][i];
}
int temp=count%7;
if(temp>=6){
x=(2+temp)%7;
} else x=temp+2;
if(x<=c){
d=c-x+1+(b-1)*7;
}
else if(x>c){
d=c-x+1+7+(b-1)*7;
}
return d;
}
int main()
{
int a,b,c,y1,y2;
cin>>a>>b>>c>>y1>>y2;
for(int i=y1;i<=y2;i++)
{
int day=jisuan(a,b,c,i);
if (day>ju[judge(i)][a-1])
{
cout<<"none\n";
}
else
{
printf("%04d/%02d/%02d\n",i,a,day);
}
}
return 0;
}