Lucky and Good Months by Gregorian Calendar(poj 3393)
大致题意:
科普文一篇,文章80%都是无用信息,因为都是常识,但是又不得不看,因为有20%是常人不知道的历史常识。
定义:
Goog month : 该月第一个工作日为星期一的月份
Luckly month: 该月最后一个工作日为星期五的月份
问: 给定一个Gregorian Calendar格里高公历的 时间闭区间(就是包括端点的年月了)
【开始年、月】~【结束年、月】
在这个时间区间内,有多少个Goog month,有多少个Luckly month
文章要点:
Gregorian Calendar格里高公历 就是现在广泛使用公历(西历),下面简称GC
GC的起始日期为 1年1月1号,该日为星期六
GC平年有365天,闰年366天(2月多1天)
GC有12个月,各月的天数和现在的使用的西历一致
GC在1582年之前(不包括1582),若该年份能被4整除,则为闰年
GC在1582年之后(包括1582),判断闰年的标准(满足下面随便一个):
(1) 能被4整除,但不能被100整除;
(2) 能被400整除。
由于历史原因,GC规定1700年无条件为闰年
由于历史原因,GC规定1752年9月3日~13日共11天不存在,即1752年9月只有19天
GC一星期有7天,排序为Sun,Mon,Tue,Wed,Thu,Fri,Sat,和现在的星期一致,其中Mon到Fri为工作日,Sun和Sat为休息日
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int mnum[]={,,,,,,,,,,,,};
int rnum[]={,,,,,,,,,,,,};
int nu52[]={,,,,,,,,,,,,};
int rr[],rr_b[],good[][],lucky[][];
int run(int x)
{
if(rr_b[x])return rr[x];
rr_b[x]=;
if(x<&&x%==)rr[x]=;
else if(x==)rr[x]=;
else if(x%==)rr[x]=;
else if(x%==&&x%!=)rr[x]=;
return rr[x];
}
void work()
{
int day=;
for(int i=;i<=;i++)//循环年份
{
for(int j=;j<=;j++)//循环月份
{
if(j==)//一月和普通月的差别
{
good[i][j]=good[i-][];
lucky[i][j]=lucky[i-][];
}
else
{
lucky[i][j]=lucky[i][j-];
good[i][j]=good[i][j-];
}
if(i==)//1752年
{
int gd=(day+)%,ld=(day+nu52[j])%;
if(gd==||gd==||gd==)good[i][j]+=;
if(ld==||ld==||ld==)lucky[i][j]+=;
day=(day+nu52[j])%;
}
else if(run(i))//普通闰年
{
int gd=(day+)%,ld=(day+rnum[j])%;
if(gd==||gd==||gd==)good[i][j]+=;
if(ld==||ld==||ld==)lucky[i][j]+=;
day=(day+rnum[j])%;
}
else//普通年
{
int gd=(day+)%,ld=(day+mnum[j])%;
if(gd==||gd==||gd==)good[i][j]+=;
if(ld==||ld==||ld==)lucky[i][j]+=;
day=(day+mnum[j])%;
}
}
}
}
int main()
{
int x,xm,y,ym,T;
work();
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d%d",&x,&xm,&y,&ym);
if(xm==)printf("%d %d\n",lucky[y][ym]-lucky[x-][],good[y][ym]-good[x-][]);
else printf("%d %d\n",lucky[y][ym]-lucky[x][xm-],good[y][ym]-good[x][xm-]);
}//注意xm是一月份的时候
return ;
}
Lucky and Good Months by Gregorian Calendar(poj 3393)的更多相关文章
- POJ 3393:Lucky and Good Months by Gregorian Calendar 年+星期 模拟
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- Lucky and Good Months by Gregorian Calendar - POJ3393模拟
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Description Have ...
- Lucky and Good Months by Gregorian Calendar(模拟)
http://poj.org/problem?id=3393 好大的一道模拟题,直接当阅读理解看了.下面是大神写的题意,解释的好详细. 定义: Goog month : 该月第一个工作日为星期一的月份 ...
- POJ 3393 Lucky and Good Months by Gregorian Calendar 模拟题
题目:http://poj.org/problem?id=3393 不多说了,简单模拟题,因为粗心写错了两个字母,导致错了N遍,模拟还是一贯的恶心,代码实在不想优化了,写的难看了点.. #includ ...
- POJ 3393 Lucky and Good Months by Gregorian Calendar
http://poj.org/problem?id=3393 题意 : 对于这篇长长的英语阅读,表示无语无语再无语,花了好长时间,终于读完了.题目中规定每周的周六日为假日,其他为工作日,若是一个月的第 ...
- poj 3393 Lucky and Good Months by Gregorian Calendar(模拟)
题目:http://poj.org/problem?id=3393一道题目挺长的模拟题,参考了网上大神的题解. #include <iostream> #include <cstdi ...
- 三部曲二(基本算法、动态规划、搜索)-1003-Lucky and Good Months by Gregorian Calendar
模拟加阅读题......虽然很多事常识性的知识,但也有许多不知道的知识,关键是不读不知道那些是已经知道的那些不是,许多重要的信息零散的分布在一大坨英文里,读起来很痛苦......自己读了一遍,读的晕晕 ...
- Maya Calendar POJ - 1008 (模拟)
简述 注意260天的情况,这个地方还是0年 代码 #include <iostream> #include <map> #include <sstream> usi ...
- poj3393[模拟题]
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
随机推荐
- 洛谷 First Step (ファーストステップ) 3月月赛T1
题目背景 知らないことばかりなにもかもが(どうしたらいいの?) 一切的一切 尽是充满了未知数(该如何是好) それでも期待で足が軽いよ(ジャンプだ!) 但我仍因满怀期待而步伐轻盈(起跳吧!) 温度差なん ...
- Go 1.4 正式版发布,官方正式支持 Android
Go 1.4 正式发布啦,是第五个 Go 的稳定版本,与上一个稳定版本 Go 1.3 相隔 6 个月.Go 1.4 包括一些小的语言改进,支持更多的操作系统和处理器架构:改进了工具链和库.同时,Go ...
- IOS Array 排序方法
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) { if ([obj1 integerVal ...
- @ConditionalOnProperty来控制Configuration是否生效
1. 简介 Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效 2. 说明 @Retention(RetentionPolicy.RUNTI ...
- int型除以int型
int型除以int型得到的还是int型 就算你是这样的:float a = 5/3,虽然你定义的a是float型,但a得到的结果依旧是1.0000而不是1.66666 5/3先得到1,然后再转换成1. ...
- python_113_socket编程
Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递. 我们知道网络 通信 都 是基于 ip+port 方能 ...
- html中常见符号的代码表示
HTML中空格的集中代码表示: HTML中空格 不断行的空白(1个字符宽度) 半个空白(1个字符宽度) 一个空白(2个字符宽度) 窄空白(小于1个字符宽度) 其他常见的 ...
- vsftp配置日志及其启用本地时间
vsftp配置日志及其启用本地时间 1. 启用vsftp日志 xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/xferl ...
- OmniFocus
褪墨・时间管理 “把所有事情都从你的脑袋里弄出来.在事情出现就做好相关行动的一系列决定,而不是在事情爆发的时候.以合适的类别组织好你的项目的各种提醒以及下一步行动.保持你的系统更新和完整,及时进行回顾 ...
- vba练习资料
链接:https://pan.baidu.com/s/1E0e58rZ_3QCCorWNM-ehSA 提取码:jluf