Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input
,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
分析
这个题很水,但是呢,我老是忘记每个月有多少天
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
31天的月份 1 3 5 7 8 10 12
2月如果是闰年就是29天
2月不是闰年就是28天
AC
#include<bits/stdc++.h>
using namespace std;
int mon[13]={
0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int a,b,c;
while(~scanf("%d/%d/%d",&a,&b,&c))
{
if(a%4==0&&a%100!=0||a%400==0)
{
mon[2]=29;
}
else
{
mon[2]=28;
}
int sum=0;
for(int i=1;i<b;i++)
{
sum+=mon[i];
}
sum+=c;
cout<<sum<<endl;
}
return 0;
}
====================== 2020年1月15日更新 ============================
评论区一位大佬提出了关于泽勒的一致性算法,研究了一下,这里就提供给大家:
泽勒一致性是由克里斯汀-泽勒开发的用于计算某天是星期几的计算公式。计算公式如下:
h=(q+[26*(m+1)/10]