Problem Description
输入一个用年月日表示的日期,求该日期是该年的第几天。输入某年的第几天,输出这一天是该年的几月几号,茂茂解不出,需要你的帮助。
Input
开始有个整数k,表示询问的种类,如果k=1,后面有三个合法的整数a,b,c,表示输入的年月日,此时输出该日期是该年的第几天;如果k=2,后面有两个合法的整数a,b,求a年的第b天的日期。保证所有的输入合法。
Output
对于询问1,输出一个整数表示是该年的第几天。对于询问2,输出年月月,格式为****/**/** 如2013/09/07
Sample Input
2 2013 70 1 2013 3 1 1 2000 3 1
Sample Output
2013/03/11 60 61
#include <iostream>
using namespace std;
int isRN(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
{
return 1;
}
return 0;
}
int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int main()
{
int n;
int y,m,d;
int s;
int flag;
while(cin>>n)
{
s=0;
if(n==1)
{
cin>>y>>m>>d;
flag=isRN(y);
for(int i=1;i<m;++i)
{
s+=a[flag][i];
}
s+=d;
cout<<s<<endl;
}
else if(n==2)
{
cin>>y>>s;
flag=isRN(y);
m=0;
do{
s-=a[flag][++m];
}while(s>0);
d = s+a[flag][m];
if(m>=10)
{
cout<<y<<"/"<<m<<"/"<<d<<endl;
}
else
{
cout<<y<<"/0"<<m<<"/"<<d<<endl;
}
}
}
return 0;
}