hdu 2005 第几天?
题目描述
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 193611 Accepted Submission(s): 68291
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
Author
lcy
问题解答
#include <stdio.h>
int main()
{
int year,month,day;
while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
int amount=0;
for(int i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
amount+=31;
if(i==4||i==6||i==9||i==11)
amount+=30;
if(i==2)
amount+=29;
}
printf("%d
",amount+day);
}
else
{
int amount=0;
for(int i=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
amount+=31;
if(i==4||i==6||i==9||i==11)
amount+=30;
if(i==2)
amount+=28;
}
printf("%d
",amount+day);
}
}
}
笔记
- 闰年的定义:第一种闰年是可以被4整除但不能被100整除;第二种闰年是可以被400整除。
- 这个代码唯一可取的应该是逻辑思维,这样写要是被老师看到会被讽刺死的,优秀的代码应该是可视化程度很高的,通过调用函数进行简化,并且分块呈现。不过好在程序短,可以一口气吞下,而且也AC了,就懒得改了(gif.哭笑)