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秒开 ...
随机推荐
- wireshark抓包实战(四),数据包的操作
1.标记数据包 当我们找到一个数据包感觉它很重要时,想要让它更明显怎么办呢?让它高亮即可! 具体操作: 选中某个条目,右键mark即可 2.为数据包添加注释 选中包以后,右键"分组注释&qu ...
- SQL表的简单操作
创建数据库表,进行增删改查是我们操作数据库的最基础的操作,很简单,熟悉的请关闭,免得让费时间. 1.创建表: sql中创建数值类型字段要根据该字段值的增长情况选择类型: tinyint 占1个字节,长 ...
- 37.1 net-- udp传输
一.打开接收端 package day35_net_网络编程.udp传输; import java.io.IOException; import java.net.*; /* * 使用UDP协议接收数 ...
- Go语言的GPM调度器是什么?
我是平也,这有一个专注Gopher技术成长的开源项目「go home」 导读 相信很多人都听说过Go语言天然支持高并发,原因是内部有协程(goroutine)加持,可以在一个进程中启动成千上万个协程. ...
- 宏定义#define和内联函数inline的区别
1 宏定义在预编译的时候进行字符串替换.内联函数在编译的时候进行函数展开. 2 宏定义没有类型检查.内联函数会进行参数列表.返回值等类型检查.
- java的图形化界面 文本区JTextArea的程序例子
package java1; //使用时这个改成你的包名即可//文本区 JTextArea import javax.swing.*;import java.awt.*;import java ...
- OSI 七层模型以及TCP/IP模型
OSI 七层模型 定义 OSI(Open System Interconnection)即开放式系统互联通信参考模型.该模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一 ...
- Alpha-release 总结
因组员一周来事情较多,因此博客更新停滞了一个星期.这周我们已经开始了第二个release的相关工作,首先先对上一个release的工作进行简短总结. 团队在上个星期进行了alpha-release版本 ...
- 一起了解 .Net Foundation 项目 No.24
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Xamarin.Mobil ...
- XML-解析失败原因初步分析
更多精彩文章请关注公众号『大海的BLOG』 首先放出有问题的代码 之所以直入主题是因为肝完了事情,急需入睡.hiahia hiboard:updateUrl="https://xxx.com ...