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秒开 ...
随机推荐
- 原生js,jquery通过ajax获得后台json数据动态新增页面元素
一.原生js通过ajax获取json数据 因为IE浏览器对ajax对象的创建和其他浏览器不同,为了兼容全部浏览器,我用下面的代码: function createXMLHttpRequest(){ t ...
- Tkinter布局管理器
Layout management in Tkinter 原英文教程地址:zetcode.com In this part of the Tkinter tutorial, we introduce ...
- java文件中出现最多的前n个单词
将文件打开,之后每读入一次,最后按空格进行分割.存入到map里面之后进行相应的比较输出操作.并将相应的内容输出到文件里面. package com.keshangone; //将想要输出的数据写入新的 ...
- 【翻译】OpenVINO Pre-Trained 预训练模型介绍
OpenVINO 系列软件包预训练模型介绍 本文翻译自 Intel OpenVINO 的 "Overview of OpenVINO Toolkit Pre-Trained Models& ...
- C语言 文件操作(七)
C语言获取文件状态 stat() #include <sys/stat.h> #include <unistd.h> int stat(const char *file_nam ...
- NHibernate COUNT(*) 统计问题
NHibernate这个框架用了有一年多了,相对有很大的优势,可以省去很多写Sql的时间. 但是如果你想用它做统计,那么有点抱歉,只能手动写写了.它内置的东西很难符合你的需求. 我遇到的问题是这样的. ...
- 页面DIV弹出层 JS原生脚本
<script type="text/javascript"> /* * 弹出DIV层 */ function showDiv() { ...
- django 利用ORM对单表进行增删改查
牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出 ...
- jvm入门及理解(四)——运行时数据区(堆+方法区)
一.堆 定义: Heap,通过new关键字创建的对象,都存放在堆内存中. 特点 线程共享,堆中的对象都存在线程安全的问题 垃圾回收,垃圾回收机制重点区域. jvm内存的划分: JVM内存划分为堆内存和 ...
- public、private、protected继承区别