题目7 Day of Week

 1 import java.util.Arrays;
 2 import java.util.Comparator;
 3 import java.util.HashMap;
 4 import java.util.Map;
 5 import java.util.Scanner;
 6
 7 public class Main{
 8     public static void main(String[]args){
 9         Map<String, Integer> Month2Int=new HashMap<String, Integer>();
10         Month2Int.put("January", 1);
11         Month2Int.put("February", 2);
12         Month2Int.put("March", 3);
13         Month2Int.put("April", 4);
14         Month2Int.put("May", 5);
15         Month2Int.put("June", 6);
16         Month2Int.put("July", 7);
17         Month2Int.put("August", 8);
18         Month2Int.put("September", 9);
19         Month2Int.put("October", 10);
20         Month2Int.put("November", 11);
21         Month2Int.put("December", 12);
22         Map<Integer, String> int2Week=new HashMap<Integer, String>();
23         int2Week.put(1, "Sunday");
24         int2Week.put(2, "Monday");
25         int2Week.put(3, "Tuesday");
26         int2Week.put(4, "Wednesday");
27         int2Week.put(5, "Thursday");
28         int2Week.put(6, "Friday");
29         int2Week.put(7, "Saturday");
30
31         Date t=new Date();
32         t.year=0;
33         t.month=1;
34         t.day=1;
35         int count=0;
36         while(t.year!=3001){
37             buf[t.year][t.month][t.day]=count;
38             t.nextDate();
39             count++;
40         }
41
42         Scanner in=new Scanner(System.in);
43         while(in.hasNext()){
44             int day=in.nextInt();
45             String month=in.next();
46             int year=in.nextInt();
47             int month_=Month2Int.get(month);
48
49             int x1=buf[year][month_][day];
50             int x2=buf[2015][9][9];
51             int c=x1-x2+3;
52             c=(c%7+7)%7;
53             c++;
54             System.out.println(int2Week.get(c));
55         }
56      }
57     private static int isYeap(int x){
58         if(x%4==0&&x%100!=0||x%400==0) return 1;
59         else return 0;
60     }
61     private static int[][]dayOfMonth={
62             {0,0},
63             {31,31},
64             {28,29},
65             {31,31},
66             {30,30},
67             {31,31},
68             {30,30},
69             {31,31},
70             {31,31},
71             {30,30},
72             {31,31},
73             {30,30},
74             {31,31}
75     };
76     private static class Date{
77         int year;
78         int month;
79         int day;
80         void nextDate(){
81             day++;
82             if(day>dayOfMonth[month][isYeap(year)]){
83                 day=1;
84                 month++;
85             }
86             if(month>12){
87                 month=1;
88                 year++;
89             }
90         }
91     }
92     private static int[][][]buf=new int[3001][13][32];
93 }
时间: 2024-07-30 10:39:46

题目7 Day of Week的相关文章

四则运算题目生成程序

a.需求分析 看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习.练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 =

四则运算题目生成程序(基于控制台)

题目描述: 能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 运算符为 +, ?, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率 要求能处理用户输入的真分数, 如 1/2, 5/12 等 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 功能设计: 1.  通过随机数的生成,实现+, ?, ×, ÷的确定 2.  +, ?, ×, ÷分别赋予整

记一次坑die(误)的题目--HDU2553--(DFS)

,N皇后问题   Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 720 Accepted Submission(s): 417 Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N,求出有多少种合

九度oj 题目1552:座位问题

题目描述: 计算机学院的男生和女生共n个人要坐成一排玩游戏,因为计算机的女生都非常害羞,男生又很主动,所以活动的组织者要求在任何时候,一个女生的左边或者右边至少有一个女生,即每个女生均不会只与男生相邻.现在活动的组织者想知道,共有多少种可选的座位方案. 例如当n为4时,共有 女女女女, 女女女男, 男女女女, 女女男男, 男女女男, 男男女女, 男男男男7种. 输入: 输入包含多组测试用例,每组测试用例仅包含一个整数n(1<=n<=1000). 输出: 对于每组测试用例,输出一个数代表可选的方

201301 JAVA题目0-1级

题目描述 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 输入描述: 第一行是数据个数,第二行是输入的数据 输出描述: 返回true或者false 输入例子: 4 1 5 -5 1 输出例子: true 1 import java.util.*; 2 3 public class Main46 { 4 public

九度oj 题目1499:项目安排

题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠). 输

题目1124:Digital Roots (方法超简单)

题目1124:Digital Roots 学到的新知识 求一个数各个的和可以把其%9就行,例如13%9=4 11%9=2:123%9=6: 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3819 解决:1335 题目描述: The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then

上机题目(初级)-高次方数的尾数(Java)

题目如下: 代码如下: package huawei; public final class Demo { /* 功能: 求解M的N次方的最后三位数(M,N均大于10) 输入参数: int M:M > 10 int N:N > 10 返回值: M的N次方的最后三位数 */ public static int getLast3DigitsOfMN(int M, int N) { int result = 1; for(int i = 0;i < N;++i){ result = (resu

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N

题目1191:矩阵最大值

题目描述: 编写一个程序输入一个mXn的矩阵存储并输出,并且求出每行的最大值和每行的总和. 要求把每行总和放入每行最大值的位置,如果有多个最大值,取下标值最小的那一个作为最大值. 最后将结果矩阵输出. 输入: 输入的第一行包括两个整数m和n(1<=m,n<=100),分别代表矩阵的行和列的维数. 接下来的m行每行有n个数,代表矩阵的元素. 输出: 可能有多组测试数据,对于每组数据,输出按题目要求执行后的矩阵. 样例输入: 3 3 1 1 1 1 1 1 1 1 1 3 3 3 2 3 2 3