九度1070
- 題目描述:
-
輸入年、月、日,計算該天是本年的第幾天。
- 輸入:
-
包括三個整數年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
- 輸出:
-
輸入可能有多組測試數據,對於每一組測試數據,輸出一個整數,代表Input中的年、月、日對應本年的第幾天。
- 樣例輸入:
-
1990 9 20 2000 5 1
- 樣例輸出:
-
263 122
#include<stdio.h>
#include<string.h>
#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0
int dayOfMonth[13][2]={
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
//定義日期類
struct Date{
int Year;
int Month;
int Day;
void nextday(){
Day++;
if(Day>dayOfMonth[Month][ISYEAP(Year)])
{
Day=1;
Month++;
if(Month>12)
{
Month=1;
Year++;
}
}
}
};
//定義buf記錄日期數
int buf[3001][13][32];
int main(int argc, char* argv[])
{
//初始化
Date temp;
int count=0;
temp.Year=0,temp.Month=1,temp.Day=1;
while(temp.Year!=3001){
buf[temp.Year][temp.Month][temp.Day]=count;
temp.nextday();
count++;
}
//題目程序
int y,m,d;
while(scanf("%d %d %d",&y,&m,&d)!=EOF)
{
printf("%d\n",buf[y][m][d]-buf[y][1][1]+1);
}
return 0;
}
九度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<stdio.h>
#include<string.h>
#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0
int dayOfMonth[13][2]={
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
//定義日期類
struct Date{
int Year;
int Month;
int Day;
void nextday(){
Day++;
if(Day>dayOfMonth[Month][ISYEAP(Year)])
{
Day=1;
Month++;
if(Month>12)
{
Month=1;
Year++;
}
}
}
};
//定義buf記錄日期數
int buf[3001][13][32];
int main(int argc, char* argv[])
{
//初始化
Date temp;
int count=0;
temp.Year=0,temp.Month=1,temp.Day=1;
while(temp.Year!=3001){
buf[temp.Year][temp.Month][temp.Day]=count;
temp.nextday();
count++;
}
//題目程序
int y,m,d;
int days;
while(scanf("%d %d",&y,&days)!=EOF)
{
for(int i=1;i<13;i++)
{
for(int j=1;j<32;j++)
{
if(days==(buf[y][i][j]-buf[y][1][1]+1))
{
m=i,d=j;
}
}
}
printf("%04d-%02d-%02d\n",y,m,d); //輸出2000-03-04的方式%02d
}
return 0;
}