这个题目我用的不是很好的方法,我的出发点是通过求出从1998年1月1至所求年每月13号的天数余7是否等于1来判断是否是黑色星期五。还好这个题目的数据范围是1998-2008,十年的总天数最大也就3660天,所以还是可以求出来的。
#include<iostream>
using namespace std;
int main()
{
int y,n=0,m=0,a;
cin>>y;
for(int i=1998;i<y;i++)
{
if(i%400==0||i%4==0&&i%100!=0)
n+=366;
else n+=365;
}
n+=12;
if(n%7==1) m++;
if(y%400==0||(y%4==0&&y%100!=0))
a=29;
else a=28;
for(int i=1;i<12;i++)
{
switch(i)
{
case 1:case 3:case 5:case 7:case 8: case 10: n+=31;break;
case 4:case 6:case 9:case 11: n+=30;break;
case 2: n+=a;
}
if(n%7==1) {m++;}
}
cout<<m<<endl;
return 0;
}
是下面这位小伙伴让我写的,再附上他写的。我们的都通过了,唯一不同点是我的时间12,他的17,他代码长度比我长。不好比较优劣,http://47.107.118.184/index.php/枚举/377.html