题目1186:打印日期
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:8066
解决:2772
给出年分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> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; #define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0 int dayOfMonth[13][2]= { {0,0},//0 {31,31},//1 {28,29},//2 {31,31},//3 {30,30},//4 {31,31},//5 {30,30},//6 {31,31},//7 {31,31},//8 {30,30},//9 {31,31},//10 {30,30},//11 {31,31}//12 }; int main() { int y,n; while(scanf("%d %d",&y,&n)!=EOF) { int i; int m=ISYEAP(y); for(i=0;n>dayOfMonth[i][m];i++) { n-=dayOfMonth[i][m]; } printf("%04d-%02d-%02d\n",y,i,n); } }
原文:http://www.cnblogs.com/zhuoyuezai/p/5686501.html