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秒开 ...
随机推荐
- Linux 下如何隐藏自己不被发现?
可能在某些情况下,自己运行的程序不想或者不方便被其他人看到,就需要隐藏运行的进程.或者某些攻击者采用了本文介绍的隐藏技术,也可以让大家看到如何进行对抗. 隐藏有两种方法: kernel 层面,不对用户 ...
- Powershell 输出信息过多,结尾显示省略号
有时候我们通过powershell指令去查询某些信息时,因为输出结果过多,导致一部分重要信息被省略号代替,如下图 面对这种情况无论是 |fl 还是 out-file 亦或是 export-csv都无 ...
- Java编程最差实践常见问题详细说明(1)转
Java编程最差实践常见问题详细说明(1)转 原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没 ...
- x聊之后,又一波新的诈骗套路
前些天刚看到,x聊勒索诈骗套路,骗子的套路可以说是花样百出,这不又一网友深受其害. 事情经过是这样的 某被骗网友由于工资微薄一直想找副业增加收入,关注和加了很多群. 注意群里都是有偏亮头像的”小姐姐” ...
- 试验使用t检验
官方解释 Excel中使用T.TEST函数 T.TEST(array1,array2,tails,type) Array1 必需.第一个数据集. Array2 必需.第二个数据集. ...
- python基础--str.split
string = 'This +is -a /string' process = string.split('-') process1 = string.split('-')[-1]#-1和-2可能存 ...
- C#开发BIMFACE系列31 服务端API之模型对比2:获取模型对比状态
系列目录 [已更新最新开发文章,点击查看详细] 在上一篇<C#开发BIMFACE系列30 服务端API之模型对比1:发起模型对比>中发起了2个模型对比,由于模型对比是在BIMFAC ...
- [javascript]各种页面定时跳转(倒计时跳转)代码总结
(1)使用setTimeout函数实现定时跳转(如下代码要写在body区域内) <script type="text/javascript"> //3秒钟之后跳转到指定 ...
- .NET 4 实践 - 使用dynamic和MEF实现轻量级的AOP组件 (4)
转摘 https://www.cnblogs.com/niceWk/archive/2010/07/23/1783394.html 借花献佛 前面我们介绍了构成DynamicAspect绝大部分的类, ...
- 用functools.lru_cache实现Python的Memoization
现在你已经看到了如何自己实现一个memoization函数,我会告诉你,你可以使用Python的functools.lru_cache装饰器来获得相同的结果,以增加方便性. 我最喜欢Python的原因 ...