YTU OJ 1403: 1.1.3 Friday the Thirteenth 黑色星期五
1403: 1.1.3 Friday the Thirteenth 黑色星期五
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 75 Solved: 40
[Submit][Status][Web Board]
Description
13号又是一个星期5。13号在星期五比在其他日子少吗?为了回答这个问题,写一个程序,要求计算每个月的十三号落在周一到周日的次数。给出N年的一个周期,要求计算1900年1月1日至1900+N-1年12月31日中十三号落在周一到周日的次数,N为正整数且不大于400. 这里有一些你要知道的: 1900年1月1日是星期一.4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.年份可以被 4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年)以上规则不适合于世纪年.可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900 和2100年是平年,而2000年是闰年.请不要预先算好数据(就是叫不准打表 0。0)!
Input
一个正整数n.
Output
七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一...星期五的次数.
Sample Input
20
Sample Output
36 33 34 33 35 35 34
解析:1990年1月1日为周一,13日为周六(13%7=6)
经过一月后(31天)2月13日为6+31%7=9,数字超过了7因此要减去7 9-7=2,因此1990年2月13日为周二,
经过二月后(28天)3月13日为2+28%7=2,数字未超过7,因此1990年3月13日为周二,
经过三月后(30天)4月13日为2+30%7=5,数字未超过7,因此1990年4月13日为周五,
...
由上可知,只要知道每个月有多少天用它除以7取余数再判断一下是否超过了7,就可以知道当前13号为周几,将其存储到一个数组中记录即可。
AC代码:
import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();int a[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//存储每个月份天数int b[] = new int[8];//存储每个星期中对应星期出现的数目int sum = 13;//要求的为13号且1990年1月1日为周一,13不做改变。int m = 0;//存储星期数for (int i = 1900; i < 1900 + n; i++) {for (int j = 0; j < 12; j++) {if (((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) && (j == 2))sum++;//闰年2月份多一天/**经过sum天后当前的星期数*/if (sum % 7 == 0)b[m]++;else if (sum % 7 == 1) {if (m + 1 > 7)m = m + 1 - 7;elsem = m + 1;b[m]++;} else if (sum % 7 == 2) {if (m + 2 > 7)m = m + 2 - 7;elsem = m + 2;b[m]++;} else if (sum % 7 == 3) {if (m + 3 > 7)m = m + 3 - 7;elsem = m + 3;b[m]++;} else if (sum % 7 == 4) {if (m + 4 > 7)m = m + 4 - 7;elsem = m + 4;b[m]++;} else if (sum % 7 == 5) {if (m + 5 > 7)m = m + 5 - 7;elsem = m + 5;b[m]++;} else if (sum % 7 == 6) {if (m + 6 > 7)m = m + 6 - 7;elsem = m + 6;b[m]++;}sum = a[j + 1];//一次循环结束后sum变为当前月份天数}}for (int i = 6; i <= 7; i++)//输出周六周日天数System.out.print(b[i] + " ");for (int i = 1; i < 5; i++)System.out.print(b[i] + " ");//输出周一至周四天数System.out.print(b[5]);//输出周五天数}
}
YTU OJ 1403: 1.1.3 Friday the Thirteenth 黑色星期五相关推荐
- YTU OJ Problem 3013
YTU OJ Problem 3013 皇后问题(递归) 题目描述 编写一个函数,求解皇后问题:在 n × n 的方格棋盘上,放置 n 个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求: 1 ...
- YTU OJ Problem 2013
YTU OJ Problem 2013 C语言实验 - 一元二次方程 II 题目描述 求一元二次方程ax²+bx+c=0 的解. a,b,c为任意实数. 输入 输入数据有一行,包括 a,b,c 的值. ...
- YTU OJ 1329: 手机尾号评分
Description 30年的改革开放,给中国带来了翻天覆地的变化.2011全年中国手机产量约为11.72亿部.手机已经成为百姓的基本日用品! 给手机选个好听又好记的号码可能是许多人的心愿.但号源有 ...
- YTU OJ 2458: 换啤酒
题目描述 Ject建有n瓶啤酒,全部喝掉之后就有n个啤酒瓶.现在每3个啤酒瓶就可以换1瓶 啤酒.比如,有10瓶啤酒,喝掉之后有10个啤酒瓶,可以换10/3=3瓶啤酒,还剩1 个啤酒瓶,然后再喝掉去换啤 ...
- YTU OJ 3094: 善良的小乌龟
Description 有一天,烟台大学来了一只心地善良又善于感化其他龟的小乌龟,为什么这么说呢,我们从一件事上就可以看出来:他喜欢收养无家可归的小乌龟,并且教导他们.他收养的小乌龟在他的教导下都和他 ...
- YTU OJ 2451: 股市风云
题目描述 股市强烈动荡,有涨有跌.现在有一组数据表示各公司的涨跌(涨为正,跌为负,不动为零),要求统计出平均涨幅和平均跌幅. 输入 一组数,其中有正数,也有负数,还有0.输入的个数不定,另外,不会出现 ...
- YTU OJ 母牛的故事
题目描述 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第 n 年的时候,共有多少头母牛? 输入 输入数据由多个测试实例组成,每个测试实例占一行, ...
- YTU oj 3631 树的高度
题目描述 世界上最高的树是澳洲杏仁桉树,高 156 米.(不用看这句) 给你 N,求有 N 个节点 的完全二叉树的的高度 (约定根节点在第一层). 输入 只有一个数,表示这棵完全二叉树的节点数量. 输 ...
- YTU OJ 2914 Problem A xiaoping学构造函数
xiaoping学构造函数 时间限制: 1.00s | 内存限制: 128MB 题目描述 xiaoping刚接触类的构造和析构函数,对于构造函数的编写比较困惑.zhuangzhuang给小平布置了一道 ...
- YTU OJ 2914 xiaoping学构造函数
[题目描述]: Description xiaoping刚接触类的构造和析构函数,对于构造函数的编写比较困惑.zhuangzhuang给小平布置了一道题目,xiaoping苦思两天也无法解答,请你帮帮 ...
最新文章
- arm板telnetd为什么运行不了_Win10 ARM 迎来原生 PS,微软玩 ARM 能赢过苹果吗
- 数据库操作——多表查询
- drop table中cascade的含义及用法
- 集群资源分配_分析下 Node.js 关于集群的那些事
- 母版页可以动态切换吗?
- 通过Chocolatey软件包管理器安装.NET Core
- scrapy 模拟登陆
- Asp.Net服务器控件开发的Grid实现(三)列编辑器
- “华为搜索”正海外内测;苹果5亿美元和解“降速门”;Firefox隐藏HTTPS | 极客头条...
- 达摩院 2020 预测:模块化降低芯片设计门槛 | 问底中国 IT 技术演进
- 两张图片合成一张_利用溶图技巧把多张图片合成一张奇幻风格图片教程
- MyBatis的9种设计模式,我猜你不知道
- windows10下 mysql5.7.24 免安装版 安装笔记
- 基于TI DRV8424驱动步进电机实现调速和行程控制
- C语言——是否为闰年的判断
- 比亚迪--一文看懂--家用新能源汽车产品线
- 路由器不同网段虚拟服务器设置,局域网中不同网段互访?静态路由表必须要学会设置...
- three.js中坐标系转换以及camera的position、lookAt与up属性理解
- html注册新浪邮箱代码,JS仿新浪邮箱点击联系人添加Email地址
- 唐天下文化传播:惹火2021公司新年年会,天下谁人不识君?