USACO/friday

简介: Friday the Thirteenth 黑色星期五 描述 13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的 一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400.

Friday the Thirteenth 黑色星期五

描述

13号又是一个星期五。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的 一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400.

注意,开始今年是一千九百年,不是1990

这里有一些你要知道的:

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年是闰年.

请不要调用现成的函数

请不要预先算好数据(就是叫不准打表)!

格式

PROGRAM NAME: friday

INPUT FORMAT:

(friday.in)

一个正整数n.

OUTPUT FORMAT:

(friday.out)

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一...星期五的次数..

SAMPLE INPUT

20

SAMPLE OUTPUT

36 33 34 33 35 35 34
 1 #include <stdio.h>
 2 int leap(int y)//判断闰年 
 3 {
 4     if(y%4==0&&y%100!=0 || y%400==0)
 5     {
 6         return 1;//闰年 
 7     }
 8     else return 0;//平年 
 9 }
10 int main()
11 {
12     int n;
13     int a[7]={0};//7,1~6
14     int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
15     //分别表示平年的1月13日到2月13日要经历的天数,……,12月13日到1月13日经历的天数 
16     
17     int i,j;
18     int daySum=13%7;
19     int y=1900;
20     a[daySum]++;//1900年1月13日是星期六 
21     
22     freopen("friday.in","r",stdin);
23     freopen("friday.out","w",stdout);/**/
24     scanf("%d",&n);
25     for(i=0;i<n;i++)
26     {
27         y=1900+i;//y表示下面要处理的年份 
28         for(j=0;j<12;j++)
29         {
30             if(j==1&&leap(y)==1)
31             {
32                 daySum=(daySum+b[j]+1)%7;
33                 a[daySum]++;
34             }
35             else 
36             {
37                 daySum=(daySum+b[j])%7;
38                 a[daySum]++;
39             }
40         }
41     }
42     a[daySum]--;//这个地方要剪掉一个1是因为上面的循环其实已经计算到了1900+n年的1月13日。但其实题目只要求到1900+n-1年12月31日为止。 
43     printf("%d %d",a[6],a[0]);//先输出星期六、星期天 
44     for(i=1;i<6;i++)
45     {
46         printf(" %d",a[i]);
47     }
48     printf("\n");
49     return 0;
50 }
View Code

 

相关文章
|
JavaScript
Ubuntu18.04 Install Node.js Np
Ubuntu18.04 Install Node.js Np
583 0
|
机器学习/深度学习 数据建模 定位技术
【数据结构】图的基本概念—无/有向图、权和网、完全图、路径与回路
【数据结构】图的基本概念—无/有向图、权和网、完全图、路径与回路
6173 0
【数据结构】图的基本概念—无/有向图、权和网、完全图、路径与回路
|
关系型数据库 PostgreSQL
postgresql查看服务与启动
服务启动,状态查看等等
2410 0
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
167248 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
Web App开发
如何搭建 Scratch 官方网页版?真正意义上的一键安装部署
功能介绍 Scratch 是一款由麻省理工学院(MIT) 设计开发的一款面向少年的简易编程工具,Scratch 已经是少儿编程行业的基础软件。使用 Scratch,你可以编写属于你的互动媒体,像是故事、游戏、动画,然后你可以将你的创意分享给全世界。
9418 0
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
473 0
|
JavaScript 应用服务中间件 nginx
Docker 部署 Vue
在 Docker 中使用 Node 和 Nginx 基础镜像来部署一个 Vue 项目,通常可以按照以下步骤进行。这些步骤涵盖了从构建 Vue 项目到配置 Dockerfile 和 Nginx 的过程。
384 1
|
Web App开发 JavaScript 前端开发
【前端开发---Vue2】史上最详细的Vue2入门教程,从基础到进阶带你彻底掌握Vue(一)
【前端开发---Vue2】史上最详细的Vue2入门教程,从基础到进阶带你彻底掌握Vue(一)
|
小程序 关系型数据库 MySQL
Gitee项目分享——学之思开源考试系统,食堂大妈看完都学会了
Gitee项目分享——学之思开源考试系统,食堂大妈看完都学会了
|
SQL 关系型数据库 数据库
如何在 Debian 12 上安装 PostgreSQL?
【4月更文挑战第25天】
2565 0