HDU - 6112 今夕何夕

https://vjudge.net/problem/HDU-6112

#include<iostream>
using namespace std;
bool judge(int y)
{
    
    
	if( y%400==0 || (y%4==0 && y%100!=0)) return true;
	return false;
}

int getweek(int y,int m,int d)
{
    
    
	if(m==1 || m==2 ) m+=12,y-=1;
	int w=( d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400 +1 )%7;
	w=(w%7+7)%7;
	return w;
}

int main()
{
    
    
	int T,y,m,d;
	cin>>T;
	while(T--)
	{
    
    
		scanf("%d-%d-%d",&y,&m,&d);
		int w1,w2;
		w1=getweek(y,m,d);
		for(int i=y+1;; i++)
		{
    
    
			if(m==2 && d==29 && !judge(i)) continue;
			w2=getweek(i,m,d);
			if(w1==w2)
			{
    
    
				cout<<i<<"\n";
				break;
			}
		} 

	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52341477/article/details/120931877
hdu