/* //这是直接计算
#include <iostream>
#define isyear(x) (x%100!=0&&x%4==0||x%400==0?1:0)
using namespace std;
int md1[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int md2[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int y,m,d;
while(cin>>y>>m>>d){
int day=0;
if(isyear(y)){
for(int i=1;i<m;++i){
day+=md1[i];
}
day+=d;
}else{
for(int i=1;i<m;++i){
day+=md2[i];
}
day+=d;
}
cout<<day<<endl;
}
return 0;
}
*/
#include<iostream>
using namespace std;
#include<cstdio>
#define isyear(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 Day;
int Month;
int Year;
void nextDay()
{
++Day;
if(Day>dayofmonth[Month][isyear(Year)]){
Day=1;
++Month;
if(Month>12){
Month=1;
++Year;
}
}
}
};
int buf[3001][13][32];
int main(){
int y,m,d;
Date tmp;
int cnt=0;
tmp.Year=0;
tmp.Month=1;
tmp.Day=1;
while(tmp.Year!=3001){
buf[tmp.Year][tmp.Month][tmp.Day]=cnt;
++cnt;
tmp.nextDay();
}
while(cin>>y>>m>>d){
cout<<buf[y][m][d]-buf[y-1][12][31]<<endl;
}
}
九度oj 1070 今年的第几天?
最新推荐文章于 2020-11-20 13:46:41 发布
本文提供2003年清华大学计算机研究生入学考试中关于日期计算的实际代码示例。代码实现了判断闰年及计算指定日期是一年中的第几天的功能,并通过结构体维护日期状态。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1925

被折叠的 条评论
为什么被折叠?



