博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO习题:Friday the Thirteenth
阅读量:6086 次
发布时间:2019-06-20

本文共 1479 字,大约阅读时间需要 4 分钟。

这道题难度不大,就是比较麻烦。求解所有月份13号是星期几。

 

#include 
#include
#include
#include
using namespace std; const int MONTHS[] = {
0,31,28,31,30,31,30,31,31,30,31,30,31}; vector
ACC_MONTHS(13,0); vector
ACC_LEAP_MONTHS(13,0); bool is_leap_year(int year); void accumulate_months(vector
&acc_months,bool is_leap){ int count=0; for(int i=0;i<=12;i++){ int days = MONTHS[i]; if(i==2&&is_leap) days+=1; count+=days; acc_months[i] = count; } } int first_day_of_year(int year){ int d=0; for(int i=1901;i<=year;++i){ int days = 365; if(is_leap_year(i-1)) days=366; d = (d+days)%7; } return d; } int weekday(int year,int month,int day,int first_day){ vector
*acc_months = &ACC_MONTHS; if(is_leap_year(year)) acc_months = &ACC_LEAP_MONTHS; return ((*acc_months)[month-1]+day-1+first_day)%7; } bool is_leap_year(int year){ if(year%400==0) return true; else if( (year%4==0) && (year%100!=0) ) return true; else return false; } void solve(int N, vector
&stat){ for(int i =1900;i<1900+N;++i){ int first_day = first_day_of_year(i); //cout<
<<":"<
<
>N; //stat:start from monday(0) to Sunday(6) vector
stat(7,0); solve(N,stat); for(int i=0;i<7;++i){ fout<

转载于:https://www.cnblogs.com/lzyzizi/archive/2012/03/18/2405117.html

你可能感兴趣的文章
Android设备管理器漏洞2--禁止用户取消激活设备管理器
查看>>
codeforces Gym 100187A A. Potion of Immortality
查看>>
2016校招内推 -- 腾讯SNG前端 -- 面试经历
查看>>
HDU 4125 Moles 段树+KMP
查看>>
Apache2.2+Tomcat7.0整合配置详解
查看>>
Android程序的入口点
查看>>
嵌套怀疑条件运算符和一个逗号,大神寻求答案(自愿解决)
查看>>
50、Toast自定义布局
查看>>
STM32F4 Timer simplified block diagram
查看>>
python安装
查看>>
poj 1979 Red and Black(dfs水题)
查看>>
javascript与java编码互转
查看>>
【C++】类的特殊成员变量+初始化列表
查看>>
pip安装使用详解
查看>>
数学 - Codeforces Round #319 (Div. 1)A. Vasya and Petya's Game
查看>>
ExtJs--02--MessageBox相关弹出窗口alert,prompt,confirm采用
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(9月7日~9月13日)...
查看>>
NSDictionary 键值对查找
查看>>
初步boost之pool图书馆学习笔记
查看>>
QR代码简单
查看>>