1003: 1.1.3 Friday the Thirteenth 黑色星期五

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 8
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

1.1.3 Friday the Thirteenth 黑色星期五

(friday.pas/c/cpp)

13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400.

这里有一些你要知道的:

1、1900年1月1日是星期一.
2、4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.
3、年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年).
4、以上规则不适合于世纪年。可以被400整除的世纪年为闰年,否则为平年。所以,1700,1800,1900和2100年是平年,而2000年是闰年.

请不要调用现成的函数

请不要预先算好数据(就是叫不准打表)!

格式

PROGRAM NAME: friday

INPUT FORMAT:

(friday.in)

一个正整数n.

OUTPUT FORMAT:

(friday.out)

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一...星期五的次数..

输入格式

20

输出格式

36 33 34 33 35 35 34

提示

来源/分类

这道题其实我也想了很久

首先思路1 一天一天枚举 不用说肯定超时

2 一月一月枚举 n<=400 12*400还行没问题!

那么我们就这么做啦

那么怎么处理每个月之间的转化呢

这里我想到了一个非常神奇的做法(看日历)

我把 平年 中相邻月份的13号是星期几找出来,假如1月13日是星期3,2月13日是星期6  就相差了3天 那么我建一个表(不算打表吧)

between[1]=3代表1月和2月 的13号所在的星期几 的那个“几”相差多少 (有点绕O(∩_∩)O哈哈~)

那这样子肯定每一年都是相似的差值

只是在闰年的时候between[2]+1就变成了1即可

事实证明,我这个全网最神奇的做法是可行的!

太开心了想了半个小时

其实以后我还是要多善于思考一下

思考一下没准你就会雨过天晴 海阔天空!

神奇代码如下:O(∩_∩)O哈哈~

#include<bits/stdc++.h>
using namespace std;
int between[]={,,,,,,,,,,,,};//看日历打表
int sum[];
int judge(int year,int month){
if(month!=)
return ;
if(year%==&&year%!= || year%==)
return ;
return ;
}
int main()
{
int n;
cin>>n;
int Day13inweek=;
for(int i=;i<+n;i++)
for(int j=;j<=;j++)//枚举月
{
sum[Day13inweek]++;
Day13inweek+=between[j];
if(judge(i,j))
Day13inweek++;
if(Day13inweek>)
Day13inweek%=;
}
cout<<sum[]<<" "<<sum[]<<" "<<sum[]<<" "<<sum[]<<" "<<sum[]<<" "<<sum[]<<" "<<sum[];
return ;
}

Friday the Thirteenth 黑色星期五 USACO 模拟 超级简单做法的更多相关文章

  1. CodeForces - 224C. Bracket Sequence (栈模拟)简单做法

    A bracket sequence is a string, containing only characters "(", ")", "[&quo ...

  2. JS基础(超级简单)

    1     JS基础(超级简单) 1.1 数据类型 1.1.1   基本类型: 1)        Number:特别注意:NaN的检测方法:Nan!=NaN;或者使用isNaN方法 2)       ...

  3. JavaScript,一个超级简单的方法判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...

  4. zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT

    zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...

  5. phpexcelreader超级简单使用

    phpexcelreader超级简单使用 该php类可以到官网下载:http://www.codeplex.com/PHPExcel,下载的文件不能直接使用要看下面的备注. 备注: 1.要将olere ...

  6. 哈,又一款超级简单的队列(MQ)实现方案来了~

    开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...

  7. JQuery -&gt; 超级简单的下拉菜单

    使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...

  8. html超级简单实现点赞(收藏)和取消赞效果

    1.前言 我们经常会遇到对一些列表呀进行点赞呀收藏数据等效果呀.今天就用html+css实现超级简单易上手的点赞和取消赞的demo展示. 2.详情 1.css样式 .like{ font-size:6 ...

  9. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

随机推荐

  1. 析构函数 p157

    析构函数 确保对象的各部分被正确的清除,及做一些用户指定的其他清理工作. 当对象超出它的作用域时,编译器将自动调用析构函数:手动用new在堆上分配的对象空间,需要调用'delete 对象地址'进行手动 ...

  2. java分配内存空间

    分配内存空间 数组名=new 数据类型[数组长度]: new关键字用来实现为数组或对象分配内存 (堆内存) 数组具有固定的长度.获取数组的长度: 数组名.length 定义数组+分配内存空间 数据类型 ...

  3. Redux 认识之后进阶

    两个东西 action  状态 路由 以及嵌套路由 完整结构   进阶+源代码 源代码在我的 gitHub  存储库里面  https://github.com/Haisenan/Redux2.0

  4. P1083 合并序列

    题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100: 最后一行包含字符串T. 已知:1≤N ...

  5. 程序员必备神器(FastStoneCapture)

    工欲善其事,必先利其器. 作为程序员,如果我们不知道如何制作动态图或者快捷录屏.录视频等,会给人一种身怀不技的感觉:好!屁话少说,接下来我会废话连篇的介绍一款神器--------那就是FastSton ...

  6. 精通CSS:高级WEB解决方案

    选择器:高级选择器:属性选择器:[] ,例如:a[href=”#”] {};选择器的优先级:!important为最高优先级,其次优先级次序规则:a,b,c,d ,a代表行内样式,b代表ID选择器,c ...

  7. 微信小程序酒店日历超强功能

    首先利用date拿到年月日 月记得+1 ,因为是从0开始的 先遍历月份,跨年年+1 ,月归至1: 然后遍历天数, lastDat = new Date(val.year,val.month,0).ge ...

  8. 聊聊多线程哪一些事儿(task)之 二 延续操作

    hello,又见面啦,昨天我们简单的介绍了如何去创建和运行一个task.如何实现task的同步执行.如何阻塞等待task集合的执行完毕等待,昨天讲的是task的最基本的知识点,如果你没有看昨天的博客, ...

  9. vue学习笔记(三)class和style绑定

    前言 通过上一章的学习vue学习笔记(二)vue的生命周期和钩子函数,我们已经更近一步的知道了关于vue的一些知识,本篇博客将进一步探讨vue其它方面的内容,vue中关于class和style绑定,关 ...

  10. SpringBoot入门简易教程

    使用SpringBoot来开发一个简单的restful api网关功能,目标:实现对SpringBoot的简单入门. 1. 创建SpringBoot项目 可以通过spring官网(https://st ...