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; }