USACO Training Section 1.1黑色星期五Friday the Thirteenth
题目描述
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年是闰年.
请不要调用现成的函数
请不要预先算好数据(就是叫不准打表)!
输入输出格式
输入格式:
一个正整数n.
输出格式:
**输出请从周六开始
输入输出样例
输入样例#1:
20
输出样例#1:
36 33 34 33 35 35 34
说明
题目翻译来自NOCOW。
附上某神人的强模拟,很强,600行
#include<cstdio>
using namespace std;
bool isLeapYear(int year){
if(year == 1900 || year == 2000 || year == 2100 || year == 2200 || year == 2300 || year == 2400 || year == 2500){
if(year % 400 == 0){
return true;
}
}else if(year % 4 == 0){
return true;
}
return false;
}
int main(){
int n;
scanf("%d",&n);
int ans[7] = {};
int day = 1;
for(int i = 1900;i < 1900 + n;i++){
if(isLeapYear(i) == false){
for(int j = 0;j < 31;j++){//平年1月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 28;j++){//平年2月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年3月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//平年4月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年5月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//平年6月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年7月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年8月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//平年9月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年10月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//平年11月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//平年12月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
}else{
for(int j = 0;j < 31;j++){//闰年1月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 29;j++){//闰年2月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年3月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//闰年4月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年5月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//闰年6月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年7月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年8月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//闰年9月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年10月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 30;j++){//闰年11月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
for(int j = 0;j < 31;j++){//闰年12月
if(j == 13){
if(day == 1){
ans[day - 1]++;
}else if(day == 2){
ans[day - 1]++;
}else if(day == 3){
ans[day - 1]++;
}else if(day == 4){
ans[day - 1]++;
}else if(day == 5){
ans[day - 1]++;
}else if(day == 6){
ans[day - 1]++;
}else if(day == 7){
ans[day - 1]++;
}
}
day++;
if(day > 7){
day = 1;
}
}
}
}
printf("%d ",ans[6]);
printf("%d ",ans[0]);
printf("%d ",ans[1]);
printf("%d ",ans[2]);
printf("%d ",ans[3]);
printf("%d ",ans[4]);
printf("%d ",ans[5]);
return 0;
}
USACO Training Section 1.1黑色星期五Friday the Thirteenth的更多相关文章
- USACO Training Section 1.1 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...
- USACO Training Section 1.1 Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- USACO Training Section 1.2 双重回文数 Dual Palindrom
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...
- USACO Training Section 1.1 题解(共4题)
第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...
- 等差数列 [USACO Training Section 1.4]
题目描述 一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双平方数集 ...
- 回文检测 [USACO Training Section 1.3]
题目描述 据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文.你的工作就是去寻找这些牛制造的奇观(最棒的回文). 在寻找回文时不用理睬那些标点符号.空格( ...
- USACO Training Section 1.2 [USACO1.2]方块转换 Transformations
题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...
- USACO Training Section 1.2 挤牛奶Milking Cows
题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...
随机推荐
- Mac系统中安装virtualenv虚拟环境
总体来说有三个步骤. 1.创建工作目录. python3 -m venv lanyue_env 注意: 2.安装virtualenv. pip3 install --user virtualenv 2 ...
- "文本"组件:<text> —— 快应用原生组件
 <template> <div class="container"> <text>H-UI</text> </div> ...
- Mac配置hosts文件
说明:工作里面有时候会遇到内网办公的环境,需要对使用的IP和地址进行配置到hosts文件内,所以记录一下: 1,Windows配置hosts Windows里面直接打开文件夹,可进行找到system/ ...
- pgsql中的事务隔离
pgsql中的事务隔离级别 前言 事物隔离级别 在各个级别上被禁止出现的现象是 脏读 不可重复读 幻读 序列化异常 读已提交隔离级别 可重复读隔离级别 可序列化隔离级别 摘录 pgsql中的事务隔离级 ...
- 开源运动的"圣经"——《大教堂与集市》读书笔记
作者:Eric S. Raymond 一.黑客圈简史 1.早期 (1)MIT 与 ITS "黑客"一词大约就起源于MIT的计算机文化. 从PDP-1时代开始,黑客文化的命运就和DE ...
- @SessionAttributes 的使用
@SessionAttributes 注解只用作用在 类 上,作用是将指定的 Model 的键值对保存在 session 中.可以让其他请求共用 session 中的键值对. 指定保存的属性名 作用是 ...
- 功能测试--聊天功能测试&微信聊天
微信聊天功能测试 发送对象 普通用户.公众号.群.其他特殊主体 衍生功能 转发.语音转文字.删除等 消息发送 单聊.群聊.语音.文字.图片.表情.链接.字符及长度 消息管理 发布通知.接受通知.发文件 ...
- 为什么选择python?
Why python? 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情. —— Linux 之父 Linux Torvalds 作为一个使用主义的学习者 ...
- ThreadLocal 是什么鬼?用法、源码一锅端
ThreadLocal 是一个老生常谈的问题,在源码学习以及实际项目研发中,往往都能见到它的踪影,用途比较广泛,所以有必要深入一番. 敢问,ThreadLocal 都用到了哪里?有没有运用它去解决过业 ...
- 立体匹配-----NCC视差匹配
目录 一.立体匹配算法 1.立体匹配算法分类 二.NCC 视差匹配方法 1.原理 2.NCC计算公式 3.算法流程 4.代码实现 5.不同场景运行 三.结论 四.遇到的问题及解决方法 一.立体 ...