USACO Section 1.1 Friday the Thirteenth 解题报告
题目
题目描述
黑色星期五是否真的是一件不同寻常的事情?按理来说每个月的13号可能是星期一,或者是星期二...或者是星期天,但是黑色星期五的存在让我们不禁开始猜想,难道每个月的13号刚好是星期五的频率很少吗?现在我们需要对这个事件进行研究一下。
黑色星期五源于西方的宗教信仰:耶稣基督死在星期五,而13是不吉利的数字,两者的结合令人相信当天会发生不幸的事情。现在中国也有许多信仰基督教的教徒,自然,黑色星期五在中国传开了。两者的结合令人相信当天会发生不幸的事情。星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。
我们从1900年1月1日开始,一直到N年之后,也就是直到(1900+N-1)年的12月31日。我们需要统计在这段时间当中,每个月的13日是星期几,最终输出星期一到星期天在这N年的每个月13日中出现了多少次。要求按照星期六、星期天...星期五的次序输出。
数据范围
0 <= N <= 400- 1900年1月1日是星期一
- 注意平年与闰年的差异
样例输入
20
样例输出
36 33 34 33 35 35 34
解题思路
我们通过枚举1900年到(1900+N-1)年的每个月,然后计算这个月的13日与1900年1月1日相差多少天,这样我们就能算出这个月的13日是星期几,然后记录下来。
在编写代码的时候,容易犯的错误有:平年闰年的判断,最终的结果顺序输出错误,下意识的计算成每一年的每月13日与该年的1月1日的差(我最开始就犯了这个错误...)
解题代码
/*
ID: yinzong2
PROG: friday
LANG: C++11
*/
#define MARK
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int d[7];
int daysOfMonth[13][2] = {{0,0}, {31,31}, {28,29}, {31,31}, {30,30}, {31,31}, {30,30},
{31,31}, {31,31}, {30,30}, {31,31}, {30,30}, {31,31}};
int n;
int isLeap(int y) {
if((y%400 == 0) || ((y%4 == 0)&&(y%100 != 0))) {
return 1;
}
return 0;
}
void cal(int begin, int end) {
int leap = 0;
int sum = 0;
for(int i = begin; i < end; i++) {
leap = isLeap(i);
for(int j = 1; j <= 12; j++) {
d[ (sum+13)%7 ]++;
//关键是在这个地方避免我之前出现的错误
sum += daysOfMonth[j][leap];
}
}
}
int main() {
#ifdef MARK
freopen("friday.in", "r", stdin);
freopen("friday.out", "w", stdout);
#endif
while(~scanf("%d", &n)) {
memset(d, 0, sizeof(d));
int beginYear = 1900;
int endYear = 1900+n;
cal(beginYear, endYear);
for(int i = 6, j = 0; j < 7; j++, i = (i+1)%7) {
if(j) printf(" ");
printf("%d", d[i]);
}
printf("\n");
}
return 0;
}
USACO Section 1.1 Friday the Thirteenth 解题报告的更多相关文章
- USACO Section 1.3 Ski Course Design 解题报告
题目 题目描述 有N座山,每座山都有一个高度,现在由于农夫想避税,所以想把这些山的高度进行一些改变,使得最高的山与最低的山之间的高度差不超过17.每座山最多只能改变一次高度,每次改变高度都会产生一定的 ...
- USACO Section 1.2 Name That Number 解题报告
题目 题目描述 在一个农场里面,每一头牛都有一个数字编号,但是现在这些牛不喜欢这种编号,它们想把这些数字编号转化成为可以接受的字母的形式.数字与字母的转换表如下: 2: A,B,C 5: J,K,L ...
- USACO Section 1.1 Greedy Gift Givers 解题报告
题目 问题描述 有若干个朋友,朋友之间可以选择互相赠送一些有价值的礼物.一个人可以选择将一部分钱分给若干个朋友,例如某人送给其他两个人钱,总共赠送3元,两个人平均分,原本应该是每人1.5元,但是只能取 ...
- USACO Section 1.4 Mother's Milk 解题报告
题目 题目描述 有三个牛奶桶,三个桶的容积分别是A,B,C,最小为1,最大为20.刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的.我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还 ...
- USACO Section1.1 Friday the Thirteenth 解题报告
friday解题报告 —— icedream61 博客园(转载请注明出处) -------------------------------------------------------------- ...
- USACO Section2.1 Sorting a Three-Valued Sequence 解题报告
sort3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section 1.1-3 Friday the Thirteenth
Friday the Thirteenth 黑色星期五 13号又是一个星期五.13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数. 给出N年的一个 ...
- 「USACO 1.3」 Name That Number 解题报告
\(注意 该篇题解为本人较早时期写的题解 所以会很傻 直接能用map 以string为下标偏偏要绕弯儿 有时间改一改QAQ\) [USACO1.2]Name That Number 题目描述 在威斯康 ...
- USACO Section2.2 Preface Numbering 解题报告 【icedream61】
preface解题报告----------------------------------------------------------------------------------------- ...
随机推荐
- 《JS权威指南学习总结--第二章词法结构》
第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...
- 宏定义重写NSLog
只需要 在ProjectName_Prefix.pch 中追加你对应的宏定义,不用import 就可以直接使用了. #define DEBUG //宏输出函数 #ifdef DEBUG #define ...
- jsp 页面取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- ibatis resultMap 结果集映射
1.结果集映射 就是将返回的记录,逐个字段映射到java对象上:如果数据库字段与java对象的成员变量名对应的话,则使用resultClas即可 2.实现 结合 ibatis初探这篇文章中提到的pro ...
- windows ORA-12560: TNS: 协议适配器错误
1.first it report ORA-12560: TNS: 协议适配器错误 手工设定环境变量如下: set ORACLE_HOME=d:\app\OAadmin\product\11.2.0\ ...
- HUST - 1599 Multiple
input 长度不大于3*10e5的数字串 output 不含前导0的能整除64的字串的个数(0算一个,064不算) 一般数组中找能整除一个数的字串都是用取余来做的 用一个a[64]来存下从1-i位累 ...
- c++模板两个数的加法
1.最简单的情况: template<class T> T Add(const T& a, const T& b) { return a + b; } 缺点是不能够处理不同 ...
- php 批量导入数据的一种思维
<?php $str="风湿免疫科 消化内科 内分泌科 神经内科 感染内科 心血管内科放疗中心";$arr=explode(' ',$str);$sql="&quo ...
- 图像操作相关 With Quartz 2D
本文将为大家介绍常见的IOS图像处理操作包括以下四部分:旋转,缩放,裁剪以及像素和UIImage之间的转化,主要使用的知识是quartz2D.Quartz2D是CoreGraphics框架中的一个重要 ...
- wifi 3G 流量
// // flowStatis.c // Test // // Created by iXcoder on 12-7-19. // Copyright (c) 2012年 iXcoder. ...