USACO 1.1 Friday the Thirteenth

本文介绍了一个USACO竞赛题目中关于计算特定年份内13号落在星期五的次数的问题解决方法。通过枚举每个月13号是星期几,并采用一种简便的计算方式,即从第二年开始,将上个月的天数加到当前星期数并取模7来更新星期数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[报告]

   本来这道题昨天就能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)

转载于:https://www.cnblogs.com/klarkxy/archive/2009/12/14/10017184.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值