算法提高 任意年月日历输出

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

已知2007年1月1日为星期一。

设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。

为完成此函数,设计必要的辅助函数可能也是必要的。其中输入为年分和月份。

样例输入:

2007 1

样例输出:

Calendar 2007-01

Su Mo Tu We Th Fr Sa

  1. 1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30 31

样例输入:

2010 9

样例输出:

Calendar 2010-09

Su Mo Tu We Th Fr Sa

  1. 1 2 3 4

5 6 7 8 9 10 11

12 13 14 15 16 17 18

19 20 21 22 23 24 25

26 27 28 29 30

注意:短线“-”个数要与题目中一致,否则系统会判为错误。



数据规模和约定

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

  例:年 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 算法提高 任意年月日历输出的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 数字黑洞

    算法提高 数字黑洞 时间限制:1.0s 内存限制:256.0MB 问题描述 任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个 ...

  2. Java实现 蓝桥杯VIP 算法提高 产生数

    算法提高 产生数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则 ...

  3. Java实现 蓝桥杯VIP 算法提高 淘淘的名单

    算法提高 淘淘的名单 时间限制:100ms 内存限制:8.0MB 问题描述 by ZBY- ? 淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙. 淘淘关注以下名字: 如 ...

  4. Java实现 蓝桥杯VIP 算法提高 项链

    算法提高 项链 时间限制:1.0s 内存限制:512.0MB 问题描述 由 n(1≤n≤100) 个珠子组成的一个项链,珠子有红.蓝.白三种颜色,各种颜色的珠子的安排顺序由键盘输入的字符串任意给定.蓝 ...

  5. Java实现 蓝桥杯VIP 算法提高 Quadratic Equation

    算法提高 Quadratic Equation 时间限制:1.0s 内存限制:512.0MB 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式: ...

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

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

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

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

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

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

  9. Java实现 蓝桥杯VIP 算法提高 5-3日历

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

随机推荐

  1. Javascript模块化编程-require.js

    转自:https://www.cnblogs.com/digdeep/p/4607131.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成"互联网应用程序&quo ...

  2. 1008 Elevator (20分)

    1008 Elevator (20分) 题目: The highest building in our city has only one elevator. A request list is ma ...

  3. java ->Servlet接口

    JavaWeb核心之Servlet Servlet简介 什么是Servlet(控制器的作用) Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给 ...

  4. 关于Nginx参数路径问题的问题

    本文转载自:https://pureage.info/2013/10/31/130.html 由于工作需要,开始分析nginx的proxy模块,在分析之前,当然要先会用了.于是开始熟悉该模块的一些指令 ...

  5. 数学分析新讲(1) NOTE

    前言:无聊才翻翻看看来复习啦..所以慢更(●'◡'●) 1.利用求和公式的性质推导: \[\sum^{n}_{k=1}k=n \] \[\sum^{n}_{k=1}k^2=\frac{n(n+1)(2 ...

  6. ASHRAE KAGGLE大能源预测(前三名方案总结+相关知识点讲解+python实现)

    @ 目录 1 概述 2 处理思想学习 2.1 移除异常值 2.2 缺失值 2.3 目标函数 2.4 特征工程 2.4.1 Savitzky-Golay filter 2.4.2 Bayesian ta ...

  7. 机器学习决策树ID3算法,手把手教你用Python实现

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第21篇文章,我们一起来看一个新的模型--决策树. 决策树的定义 决策树是我本人非常喜欢的机器学习模型,非常直观容易理解 ...

  8. 二、第一个C程序:Hello World!

    如何在Dev C++中编辑.编译和运行程序? 一.打开Dev C++ 二.在上面编辑窗口中输入以下代码 #include<stdio.h> int main() { printf(&quo ...

  9. 网鼎杯玄武组部分web题解

    查看JS,在JS中找到p14.php,直接copy下来console执行,输入战队的token就可以了 js_on 顺手输入一个 admin admin,看到下面的信息 欢迎admin这里是你的信息: ...

  10. uiautomator2通过wifi操作手机

    参考来源:https://www.cnblogs.com/c-x-a/p/11176066.html,有部分不适合当前版本的做了修改 1.手机通过USB连接电脑,先开启远程adb模式,操作如下(可以指 ...