第一次直接计算的 超时了。后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面
#include <stdio.h>
int main()
{
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day;
long long b[9605]={0},sum=0;
for(int i=1600;i<9600;i++)
{
if(i%4==0&&i%100||i%400==0)
sum+=366;
else
sum+=365;
b[i]=sum;
}
while(scanf("%d %d %d",&year,&mon,&day)!=EOF)
{
sum=b[year-1];
if(year%4==0&&year%100||year%400==0)
a[2]=29;
else
a[2]=28;
for(int i=1;i<mon;i++)
sum+=a[i];
printf("%d\n",(sum+day+5)%7);
}
return 0;
}
最优代码。。。我也是服了 神人哪里找的公式
#include<cstdio>
int main()
{
int y,m,d;
while(~scanf("%d%d%d",&y,&m,&d))
{
if(m<3) m+=12,--y;
printf("%d\n",(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7); //蔡勒公式的变种
}
}