[报告]
本来这道题昨天就能AC了,但是由于此程序一交上去,USACO爆了。……
实际上就是枚举,枚举每个月13日是星期几,再累加下就OK了。
我的计算方法是:第1年先算出来,从第2年开始,星期?=(星期?+上月天数)%7,就可以了。
[程序](我删注释拉!)
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("friday.in");
ofstream fout ("friday.out");
long n;
long s[7];
inline void init()
{
fin >> n;
}
inline long month(long y,long m)
{
if
((y%400==0)||((y%4==0)&&(y%100!=0)))
switch (m)
{
case 1:return 31;
case 2:return 29;
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
else
switch (m)
本文介绍了一个USACO竞赛题目中关于计算特定年份内13号落在星期五的次数的问题解决方法。通过枚举每个月13号是星期几,并采用一种简便的计算方式,即从第二年开始,将上个月的天数加到当前星期数并取模7来更新星期数。
1582

被折叠的 条评论
为什么被折叠?



