Usaco Trainning刷怪旅第一层第三题:Friday the Thirteenth

news2024/11/27 10:25:07

Usaco Training网站

关注我持续更新usaco training题目

Is Friday the 13th really an unusual event?

That is, does the 13th of the month land on a Friday less often than on any other day of the week? To answer this question, write a program that will compute the frequency that the 13th of each month lands on Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, and Friday over a given period of N years. The time period to test will be from January 1, 1900 to December 31, 1900+N-1 for a given number of years, N. N is positive and will not exceed 400.

Note that the start year is NINETEEN HUNDRED, not NINETEEN NINETY.

There are few facts you need to know before you can solve this problem:

  • January 1, 1900 was on a Monday.
  • Thirty days has September, April, June, and November, all the rest have 31 except for February which has 28 except in leap years when it has 29.
  • Every year evenly divisible by 4 is a leap year (1992 = 4*498 so 1992 will be a leap year, but the year 1990 is not a leap year)
  • The rule above does not hold for century years. Century years divisible by 400 are leap years, all others are not. Thus, the century years 1700, 1800, 1900 and 2100 are not leap years, but 2000 is a leap year.

Do not use any built-in date functions in your computer language.

Don't just precompute the answers, either, please.

 

PROGRAM NAME: friday

INPUT FORMAT

One line with the integer N.

SAMPLE INPUT (file friday.in)

20

OUTPUT FORMAT

Seven space separated integers on one line. These integers represent the number of times the 13th falls on Saturday, Sunday, Monday, Tuesday, ..., Friday.

SAMPLE OUTPUT (file friday.out)

36 33 34 33 35 35 34

 

跟之前一样,我手动翻译一下,大意:

求出1900年后的n年(包括1900),每年的每个月的13号各是周几

输入一个n

输出13号在周六、周日、周一、周二、周三、周四、周五的次数

题目 起来很简单对吧?

但是他的这个代码量我真是醉了

。。。还有这个行数明显就是在侮辱人

 

😅😅😅

言归正传,这题需要考虑的因素真的不少

闰年、月份天数

闰年写个闰年判断程序即可

至于月份嘛…………

直接枚举!(代码量就在这上面多的)

 然后代码也就可以轻易写出

/*
ID:
TASK:friday
LANG:C++
*/ 
# include <iostream>
# include <cstdio>
using namespace std;
# define int long long
int n;
bool isrun(int year){
	if ((year%4==0&&year%100!=0)||(year%400==0)){
		return true;
	}else{
		return false;
	}
}
signed main(){
	freopen("friday.in","r",stdin);
	freopen("friday.out","w",stdout);
	scanf("%lld",&n);
	int ans[10]={};
	int day=1;
	for (int i=1900;i<1900+n;i++){
		if (isrun(i)){//闰年 
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<29;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
		}else{
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<28;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<30;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
			for (int j=0;j<31;j++){
				if (j==13){
					ans[day-1]++;
				}
				day++;
				if (day>7){
					day=1;
				}
			}
		} 
	}
	printf("%lld %lld %lld %lld %lld %lld %lld\n",ans[6],ans[0],ans[1],ans[2],ans[3],ans[4],ans[5]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构造哈夫曼树以及求哈夫曼编码、树的带权路径长度

我们先搞清楚这几个概念 构造哈夫曼树的方法 将每种字符出现的频率先收集起来放在最上方&#xff0c;然后选择两个频率最小的增加到图中&#xff0c;并将他们的和作为他们的父节点&#xff0c;增加到图中&#xff0c;在最上方删除选择的两个节点&#xff08;4和2&#xff09;&a…

尚硅谷的项目---尚医通 前端模块 vue-element-admin

我的node版本是16的版本&#xff0c;一开始我使用的老师提供的压缩包 一直出现错误 无法 npm install 其实后来发现是node版本过高的原因&#xff0c;小伙伴们可以讲版本调到跟老师的版本一样 我是嫌麻烦&#xff0c;我就直接从github上下载了一个新的版本 网站是&#xff1…

java中的反射和Class类

动态语言 VS 静态语言&#xff1a; 动态语言是一类在运行时可以改变其结构的语言&#xff0c;例如&#xff1a;新的函数对象甚至代码可以被引进&#xff0c;已有的函数可以被删除或是其他结构上的变化&#xff0c;通俗点说就是在运行时&#xff0c;代码可以根据某些条件改变自…

【AI with ML】第 4 章 :使用公共数据集和TensorFlow 数据集

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Web前端105天-day43-JSCORE

JSCORE03 目录 前言 一、复习 二、块级作用域 三、声明提升 四、模板字符串 五、箭头函数 六、箭头函数的this 七、数组高阶函数 7.1.every 7.2.some 7.3.filter 7.4.map 7.5.join 八、ajax 九、作业 总结 前言 JSCORE学习开始 一、复习 函数的触发方式 call: 临…

跑步用头戴式耳机好吗、五款最适合跑步用的耳机推荐

无论您是为即将举行的运动进行训练的经验丰富的运动员&#xff0c;还是喜欢慢跑的人&#xff0c;一副好的运动型耳机都可以让您的日常锻炼变得与众不同。我们测试过市面上220多种蓝牙耳机&#xff0c;以下是我们针对跑步和锻炼的最佳耳机选择建议&#xff1a; 1、南卡Runner P…

[附源码]Nodejs计算机毕业设计基于web的学生社团管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

springboot 创建第一个项目

创建springboot项目的方式有很多&#xff0c;一般通过IDEA直接创建。 参考&#xff1a;创建SpringBoot项目的四种方式 - Linqylin - 博客园 代码结构&#xff1a; 代码示例&#xff1a; 创建项目的时候导入了web依赖。 pom.xml&#xff1a; <?xml version"1.0&qu…

Marvell交换机芯片SMI接口读写协议

Marvell的88E6XXX系列交换机芯片基本都提供SMI&#xff08;Serial Management Interface&#xff09;接口。 SMI接口使用2线串行通信&#xff0c;一个MDC提供时钟&#xff0c;一个MDIO为双向数据引脚。 外部CPU通过这2个引脚访问芯片内部的寄存器。 SMI接口的通信时序如图所示&…

【Python】Gamma分布详解

文章目录初步介绍形状特征初步介绍 在学习Gamma分布之前&#xff0c;有必要复习一下Poisson分布&#xff1a;泊松分布 Poisson分布指的是&#xff0c;单个事件在某一刻发生的概率。Gamma分布更进一步&#xff0c;指的是某个事件在某个时刻发生第nnn次的概率。 p(x)xk−1e−λ…

PowerDesigner 模型类型介绍

目录 PowerDesigner 提供了两种方式组织模型 分别是Categories和Model types 1.Categories方式是从企业架构建模角度出发&#xff0c;主要包含业务层&#xff0c;信息层&#xff0c;应用层&#xff0c;技术层&#xff0c;需求与规划层 1.1 业务层主要用于业务流程&#xff0c…

python游戏开发的库你知道几个?

对这方面有兴趣的朋友可以去学习学习。 01 PyGame 官网&#xff1a; Pygame Front Page — pygame v2.1.4 documentation 概述&#xff1a; Pygame 是一组专为编写视频游戏而设计的 Python 模块。 它在优秀的 SDL 库之上添加了功能。这允许您使用 python 语言创建功能齐全…

MyBatisPlus框架:一文带你清晰整个MP框架逻辑

MyBatisPlus框架&#xff1a;一文带你清晰整个MP框架逻辑需求&#xff1a;如果搭建一个SpringBootMP的基本框架&#xff1f;并入门其API使用MP入门简介工程环境搭建数据库配置依赖Yaml框架流程简单介绍下MP的底层运行过程常用APIMP日志配置主键生成策略自动填充处理扩展插件MP乐…

allegro中添加logo (方法二)

allegro中添加logo &#xff08;方法二&#xff09;1、 先制作好bmp格式的文件2、 Allegro中新建一个format symbol文件3、 导入IPF文件4、 方法对比软件环境&#xff1a;cadence 16.6前言&#xff1a;很多时候我们在设计pcb的时候都会在pcb上添加自己产品的logo&#xff0c;现…

Python《字符,符号,函数,索引》

函数描述len()计算序列的长度max()找出序列中的最大元素min()找出序列中的最小元素list()将序列转换为列表str()将序列转换为字符串sum()计算元素的和sorted()对元素进行排序enumerate()将序列组合为一个索引序列&#xff0c;多用在 for 循环中 关键字 andexecnotassertfinall…

Linux网络编程(二)——socket通信基础

目录 一、socket 二、字节序 &#xff08;一&#xff09;字节序转换函数 三、Socket地址 &#xff08;一&#xff09;通用socket地址 &#xff08;二&#xff09;专用socket地址 四、IP地址转换 五、TCP通信流程 &#xff08;一&#xff09;TCP和UDP的区别 &#xff…

深入浅出RPC

什么是RPC 为什么要有RPC PRC架构组件 RPC框架需要解决的问题&#xff1f; 1、如何确定客户端和服务端之间的通信协议&#xff1f; 2、如何更高效地进行网络通信&#xff1f; 3、服务端提供的服务如何暴露给客户端&#xff1f; 4、客户端如何发现这些暴露的服务&#xff1f; 5…

云存储学习笔记--3

目录前言1. 原理2. 实验前言 那么&#xff0c;根据我们上一版块的解释&#xff0c;其实经过思考会发现&#xff0c;传统的分区格式化会有一些问题&#xff0c;比如说&#xff1a;当我数据的存储大小超过了所有单个磁盘的存储空间大小的时候&#xff0c;会发现即使剩余空间总和…

论文复现-1论文重读:Black-Box Tuning for Language-Model-as-a-Service

论文核心&#xff1a;使用PLM的API进而完成prompt learning&#xff0c;微调完成任务。 具体来说&#xff0c;是采用连续prompts拼接在input_text之后&#xff0c;然后&#xff0c;通过derivative-free的框架&#xff0c;完成任务。 一、背景&#xff08;Introduction&#x…

门店数字化管理|门店督导工作监管难?SpaceSight 来帮忙

在门店管理中&#xff0c;这些问题是否一直困扰着你&#xff1a; 哪家店员工作更细致高效&#xff1f;难评估&#xff01; 有哪些门店问题高频发生&#xff1f;难发现&#xff01; 不同门店运营差距有多大&#xff1f;难界定&#xff01; SpaceSight 系列第二篇&#xff0c;为…