1186.打印日期
- 题目描述:
-
给出年分m和一年中的第n天,算出第n天是几月几号。
- 输入:
-
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
- 输出:
-
可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
- 样例输入:
-
2000 3 2000 31 2000 40 2000 60 2000 61 2001 60
- 样例输出:
-
2000-01-03 2000-01-31 2000-02-09 2000-02-29 2000-03-01 2001-03-01
#include<iostream> #define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1 : 0 using namespace std; int run[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int n,m,a,i; while(cin>>n>>m) { if(ISYEAP(n)) { a=1; for(i=0;i<12;i++) { if(m<=run[i]) { break; } else { m-=run[i]; a++; } } } else{ a=1; for(i=0;i<12;i++) { if(m<=ping[i]) { break; } else { m-=ping[i]; a++; } } } if(a<10&&m<10) cout<<n<<"-0"<<a<<"-0"<<m<<endl; else if(a<10&&m>=10) cout<<n<<"-0"<<a<<"-"<<m<<endl; else if(a>=10&&m<10) cout<<n<<"-"<<a<<"-0"<<m<<endl; else cout<<n<<"-"<<a<<"-"<<m<<endl; } return 0; }