首页 > 代码库 > 【Zeller公式计算星期几】HDU 6112 今夕何夕
【Zeller公式计算星期几】HDU 6112 今夕何夕
acm.hdu.edu.cn/showproblem.php?pid=6112
【思路】
公式计算即可,注意特判2月29号
Zeller公式里,计算出的week不能直接模7,要保证week是正数
【AC】
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<algorithm> 6 #include<cmath> 7 8 using namespace std; 9 10 bool leap(int y) 11 { 12 if(y%400==0) return true; 13 if(y%4==0&&y%100!=0) return true; 14 return false; 15 } 16 int Zeller(int y,int m,int d) 17 { 18 if(m==1||m==2) 19 { 20 y--; 21 m+=12; 22 } 23 int c=y/100; 24 y-=c*100; 25 int w=y+y/4+c/4-2*c+26*(m+1)/10+d-1; 26 while(w<0) w+=7; 27 w%=7; 28 return w; 29 } 30 int main() 31 { 32 int T; 33 scanf("%d",&T); 34 while(T--) 35 { 36 int y,m,d; 37 scanf("%d-%d-%d",&y,&m,&d); 38 int week=Zeller(y,m,d); 39 while(1) 40 { 41 y++; 42 if(m==2&&d==29) 43 { 44 if(leap(y)&&Zeller(y,m,d)==week) 45 { 46 printf("%d\n",y); 47 break; 48 } 49 } 50 else 51 { 52 if(Zeller(y,m,d)==week) 53 { 54 printf("%d\n",y); 55 break; 56 } 57 } 58 } 59 } 60 return 0; 61 }
【Zeller公式计算星期几】HDU 6112 今夕何夕
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。