1. 程式人生 > >牛客網 華中科技大學 列印日期

牛客網 華中科技大學 列印日期

題目描述

給出年分m和一年中的第n天,算出第n天是幾月幾號。

輸入描述:

輸入包括兩個整數y(1<=y<=3000),n(1<=n<=366)。

輸出描述:

可能有多組測試資料,對於每組資料,
按 yyyy-mm-dd的格式將輸入中對應的日期打印出來。

示例1

輸入

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<stdio.h>

//判斷是否為閏年
int isleapyear(int
year) { if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return 1; } return 0; } int main() { int i; int year, x; //累加法,分級別,以索引為月,以差值為日 int leap[13] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}; int noleap[13] = {0, 31, 59, 90, 120, 151
, 181, 212, 243, 273, 304, 334, 365}; while(scanf("%d %d", &year, &x) != EOF) { //一年12for(i = 0; i < 13; i++) { //先看看是否為閏年 if(isleapyear(year)) { if(leap[i] >= x) { printf
("%04d-%02d-%02d\n", year, i, x - leap[i - 1]); break; } } else { if(noleap[i] >= x) { printf("%04d-%02d-%02d\n", year, i, x - noleap[i - 1]); break; } } } } return 0; }