算法提高 5-3日历

时间限制:1.0s 内存限制:256.0MB

问题描述

  已知2007年1月1日为星期一。设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。为完成此函数,设计必要的辅助函数也是必要的。

样例输入

一个满足题目要求的输入范例。

例:

2050 3

样例输出

与上面的样例输入对应的输出。

例:



数据规模和约定

  输入数据中每一个数的范围。

  例:年 2007-3000,月:1-12。

  1. import java.util.Scanner;
  2. public class 日历 {
  3. public static boolean isLeap(int year) {
  4. boolean flag = false;
  5. if(year % 4 == 0 && year % 100 != 0)
  6. flag = true;
  7. else if(year % 400 == 0)
  8. flag = true;
  9. else
  10. flag = false;
  11. return flag;
  12. }
  13. public static int getDay(int month, int year) {
  14. int day = 0;
  15. if (month == 2) {
  16. if (isLeap(year))
  17. day = 29;
  18. else
  19. day = 28;
  20. } else if (month < 8) {
  21. if(month % 2 == 0)
  22. day = 30;
  23. else
  24. day = 31;
  25. } else {
  26. if(month % 2 == 0)
  27. day = 31;
  28. else
  29. day = 30;
  30. }
  31. return day;
  32. }
  33. public static int getFirst(int month, int year) {
  34. int first = 0;
  35. int distance = year - 2007;
  36. int day = 0;
  37. while (distance / 4 >= 1) {
  38. day += (365 * 4 + 1);
  39. distance -= 4;
  40. }
  41. int count = 0;
  42. while (distance > 0) {
  43. if (count == 1)
  44. day += 366;
  45. else
  46. day += 365;
  47. count++;
  48. distance--;
  49. }
  50. int fre = 0;
  51. if(isLeap(year))
  52. fre = 31 + 29;
  53. else
  54. fre = 31 + 28;
  55. int mon[] = {0, 0, 31, fre, fre+31, fre+61, fre+92, fre+122, fre+153, fre+184, fre+214, fre+245, fre+275};
  56. day += mon[month];
  57. first = day % 7;
  58. return first+1;
  59. }
  60. public static void main(String[] args) {
  61. Scanner sc = new Scanner(System.in);
  62. int year = sc.nextInt();
  63. int month = sc.nextInt();
  64. sc.close();
  65. if(year < 2007)
  66. return;
  67. int day = getDay(month, year);
  68. int firstDay = getFirst(month, year);
  69. if(month < 10)
  70. System.out.println("Calendar " + year + " - 0" + month);
  71. else
  72. System.out.println("Calendar " + year + " - " + month);
  73. for (int i = 0; i < 21; i++)
  74. System.out.print("-");
  75. System.out.print("\n");
  76. System.out.println("Su Mo Tu We Th Fr Sa ");
  77. for (int i = 0; i < 21; i++)
  78. System.out.print("-");
  79. System.out.print("\n");
  80. int count = 0;
  81. if(firstDay != 7)
  82. for (int i = 0; i < firstDay; i++) {
  83. System.out.print(" ");
  84. count++;
  85. }
  86. for (int i = 1; i <= day; i++) {
  87. if(i < 10)
  88. System.out.print(" " + i + " ");
  89. else
  90. System.out.print(i + " ");
  91. count++;
  92. if(count % 7 == 0)
  93. System.out.print("\n");
  94. }
  95. System.out.print("\n");
  96. for (int i = 0; i < 21; i++)
  97. System.out.print("-");
  98. }
  99. }

Java实现 蓝桥杯VIP 算法提高 5-3日历的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 任意年月日历输出

    算法提高 任意年月日历输出 时间限制:1.0s 内存限制:512.0MB 已知2007年1月1日为星期一. 设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印. 为 ...

  2. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  4. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  5. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  6. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  7. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  8. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  9. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

随机推荐

  1. [hdu5247]rmq+预处理

    题意:有一个无序数组,求有多少个长度为k的区间满足把区间内的数排序后是连续的. 思路:长度为k的区间排序后是 连续的数等价于maxval-minval等于k-1并且不同的数有k个(或者说没有相同的数) ...

  2. js canvas压缩图片和jQuery ajax上传图片简单demo

    原来用的插件,里面东西太乱了,一会jq,一会原生js,本来原生js就不熟,看起来更难受,而且感觉好多东西都是没用的,而且后端php转存文件一直不是很熟悉,正好一起整理一下.就是很简单的一个demo,如 ...

  3. CSS3 拯救我的布局吧box-sizing

    一.CSS常见的两栏布局 如上图,是一个很简单的两栏布局,就是一个宽度为960px:并且页面居中显示,侧边栏栏宽度为220px:主内容宽度720px:两者有一个20px的间距,并且有页眉和页脚. 代码 ...

  4. react 动态渲染echarts折线图,鼠标放大缩小

    //折线图组件import React,{Component} from 'react'; import ReactEcharts from 'echarts-for-react'; class Ec ...

  5. Django之ORM多表增删改操作

    关系表的操作语句: 以上一节中创建的书籍.出版社.作者.作者信息表为例进行: 增: # 一对一 # (1)类属性外键关联,使用外键约束属性直接进行对象关联插入 author_detail_obj=mo ...

  6. Kubernetes学习笔记(二):部署托管的Pod -- 存活探针、ReplicationController、ReplicaSet、DaemonSet、Job、CronJob

    存活探针 Kubernetes可以通过存活探针(liveness probe)检查容器是否存活.如果探测失败,Kubernetes将定期执行探针并重新启动容器. 官方文档请见:https://kube ...

  7. 用window.print()打印如何去掉页眉和页脚

    用window.print()打印如何去掉页眉和页脚 2007-07-12 11:44:52|  分类: javascript 知识|举报|字号 订阅     <script language= ...

  8. 解决el-tree横向滚动条问题

    代码如下 效果如图 仅做下记录,不做过多解释

  9. 王艳 201771010127《面向对象程序设计(java)》第二周学习总结

     王艳 201771010127<面向对象程序设计(java)>第二周学习总结 第一部分:理论知识学习部分 3.1:基本概念. 1)标识符:标识符由字母.数字.美元符号以及下划线组成.且第 ...

  10. 51Nod栈

    LYK有一个栈,众所周知的是这个数据结构的特性是后进先出的. LYK感觉这样子不太美妙,于是它决定在这个前提下将其改进,也就是说,每次插入元素时,可以在栈顶或者栈底插入,删除元素时,只能在栈顶删除.L ...