第一次直接计算的 超时了。后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面
#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); //蔡勒公式的变种 } }
时间: 2024-10-15 00:44:39