题目
http://118.190.20.162/view.page?gpid=T31
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入格式
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
2
9
/*
http://118.190.20.162/view.page?gpid=T31
*/
#include <iostream>
using namespace std;
bool isLeapYear(int y)
{
if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
{
return true;
}
else
{
return false;
}
}
int main()
{
int y;
int d;
cin>>y>>d;
int month,day;
bool isleapyear = isLeapYear(y);
if(d <= 31)
{
month = 1;
day = d;
}
else if(d <= 59)
{
month = 2;
day = d - 31;
}
else if(d <= 90)
{
month = 3;
day = d - 59;
}
else if(d <= 90)
{
month = 3;
day = d - 59;
}
else if(d <= 120)
{
month = 4;
day = d - 90;
}
else if(d <= 151)
{
month = 5;
day = d - 120;
}
else if(d <= 181)
{
month = 6;
day = d - 151;
}
else if(d <= 212)
{
month = 7;
day = d - 181;
}
else if(d <= 243)
{
month = 8;
day = d - 212;
}
else if(d <= 273)
{
month = 9;
day = d - 243;
}
else if(d <= 304)
{
month = 10;
day = d - 273;
}
else if(d <= 334)
{
month = 11;
day = d - 304;
}
else if(d <= 365)
{
month = 12;
day = d - 334;
}
if(isleapyear && month >= 3)
{
if(day == 1)
{
switch(month)
{
case 3 : day = 29; break;
case 4 :
case 6 :
case 8 :
case 9 :
case 11 : day = 31; break;
case 5 :
case 7 :
case 10:
case 12: day = 30;
}
}
else
{
day--;
}
}
cout<<month<<endl;
cout<<day<<endl;
return 0;
}