题目描述

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的更多相关文章

  1. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  2. USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers

    P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...

  3. USACO Training Section 1.1 Your Ride Is Here

    题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...

  4. USACO Training Section 1.2 双重回文数 Dual Palindrom

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...

  5. USACO Training Section 1.1 题解(共4题)

    第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...

  6. 等差数列 [USACO Training Section 1.4]

    题目描述 一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双平方数集 ...

  7. 回文检测 [USACO Training Section 1.3]

    题目描述 据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文.你的工作就是去寻找这些牛制造的奇观(最棒的回文). 在寻找回文时不用理睬那些标点符号.空格( ...

  8. USACO Training Section 1.2 [USACO1.2]方块转换 Transformations

    题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...

  9. USACO Training Section 1.2 挤牛奶Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

随机推荐

  1. tornado实现不同app路由分发

    tornado实现app路由分发 from tornado import ioloop from tornado.httpserver import HTTPServer from tornado.w ...

  2. 页面DIV弹出层 JS原生脚本

    <script type="text/javascript"> /*         * 弹出DIV层         */ function showDiv() { ...

  3. Java Array数组使用详解

    本文主要讲解java中array数组使用,包含堆.栈内存分配及区别 1.动态初始化 package myArray; /* * 堆:存储的是new出来的东西,实体,对象 * A 每个对象都有地址值 * ...

  4. scala_spark实践1

    /** * scala模型的main(args:Array[String])是业务执行入口 * org.apache.spark.{SparkConf, SparkContext} * val spa ...

  5. Go语言 命令行解析(一)

    命令行启动服务的方式,在后端使用非常广泛,如果有写过C语言的同学相信不难理解这一点!在C语言中,我们可以根据argc和argv来获取和解析命令行的参数,从而通过不同的参数调取不同的方法,同时也可以用U ...

  6. 刨根问底系列(3)——关于socket api的原子操作性和线程安全性的探究和实验测试(多线程同时send,write)

    多个线程对同一socket同时进行send操作的结果 1. 概览 1.1 起因 自己写的项目里,为了保证连接不中断,我起一个线程专门发送心跳包保持连接,那这个线程在send发送数据时,可能会与主线程中 ...

  7. Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统

    Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统 作者: 深蓝色右手  来源: 博客园  发布时间: 2011-04-19 11:18  阅读: 1282 次  推荐: 0 ...

  8. 【python实现卷积神经网络】池化层实现

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...

  9. Js 事件原理与事件委托

    事件原理三阶段 捕获(有外向内).目标.冒泡(由内向外) 事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点( ...

  10. 《SQL 反模式》 学习笔记

    第一章 引言 GoF 所著的的<设计模式>,在软件领域引入了"设计模式"(design pattern)的概念. 而后,Andrew Koenig 在 1995 年造了 ...