百练 2964 日历题目 解题呈报
添加时间:2013-6-25 点击量:
1.链接:http://poj.grids.cn/practice/2964/
2.题目:
- 总时候限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 在我们如今应用的日历中, 闰年被定义为能被4整除的年份,然则能被100整除而不克不及被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开端逝去的天数,你的任务是给出这一天是哪年哪月哪日礼拜几。
- 输入
- 输入包含若干行,每行包含一个正整数,默示从2000年1月1日开端逝去的天数。输入最后一行是−1, 不必处理惩罚。可以假设成果的年份不会跨越9999。
- 输出
- 对每个测试样例,输出一行,该行包含对应的日期和礼拜几。格局为“YYYY-MM-DD DayOfWeek”, 此中 “DayOfWeek” 必须是下面中的一个: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday 或 Saturday“。
- 样例输入
-
1730
1740
1750
1751
-1
- 样例输出
-
2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday
- 提示
- 2000.1.1. 是礼拜六
3.代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cstring>
5
6 using namespace std;
7
8 int days_of_year[2] = {365,366};
9 int days_of_month[24] = {31,28,31,30,31,30,31,31,30,31,30,31,//31,29,31,30,31,30,31,31,30,31,30,31};
10 char days_of_week[7][20] = {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday ,Saturday};
11
12 int main()
13 {
14 int day;
15 int start_year,start_month,start_day,start_week;
16 int is_leap_year;
17 while(scanf(%d,&day),day!=-1)
18 {
19 start_year = 2000;
20 start_month = 1;
21 start_day = 1;
22 start_week = 6;
23
24
25 start_week = (start_week + day) % 7;
26
27 //断定是否闰年
28 if(start_year % 4 == 0 && !(start_year % 100 == 0 && start_year % 400 != 0))
29 {
30 is_leap_year = 1;
31 }
32 else
33 {
34 is_leap_year = 0;
35 }
36
37 while(day >= days_of_year[is_leap_year])
38 {
39 start_year ++;
40 day -= days_of_year[is_leap_year];
41
42 //断定是否闰年
43 if(start_year % 4 == 0 && !(start_year % 100 == 0 && start_year % 400 != 0))
44 {
45 is_leap_year = 1;
46 }
47 else
48 {
49 is_leap_year = 0;
50 }
51 }
52
53 while(day >= days_of_month[is_leap_year12 + start_month - 1])
54 {
55 day -= days_of_month[is_leap_year12 + start_month - 1];
56 start_month ++;
57 }
58
59 start_day += day;
60
61
62 printf(%d-%02d-%02d %s\n,start_year,start_month,start_day,days_of_week[start_week]);
63 }
64 return 0;
65 }
4.思路
(1)起首要知道闰年的相干常识
(2)模仿每年每月的策画过程
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
1.链接:http://poj.grids.cn/practice/2964/
2.题目:
- 总时候限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 在我们如今应用的日历中, 闰年被定义为能被4整除的年份,然则能被100整除而不克不及被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开端逝去的天数,你的任务是给出这一天是哪年哪月哪日礼拜几。
- 输入
- 输入包含若干行,每行包含一个正整数,默示从2000年1月1日开端逝去的天数。输入最后一行是−1, 不必处理惩罚。可以假设成果的年份不会跨越9999。
- 输出
- 对每个测试样例,输出一行,该行包含对应的日期和礼拜几。格局为“YYYY-MM-DD DayOfWeek”, 此中 “DayOfWeek” 必须是下面中的一个: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday 或 Saturday“。
- 样例输入
1730
1740
1750
1751
-1- 样例输出
2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday- 提示
- 2000.1.1. 是礼拜六
3.代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cstring>
5
6 using namespace std;
7
8 int days_of_year[2] = {365,366};
9 int days_of_month[24] = {31,28,31,30,31,30,31,31,30,31,30,31,//31,29,31,30,31,30,31,31,30,31,30,31};
10 char days_of_week[7][20] = {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday ,Saturday};
11
12 int main()
13 {
14 int day;
15 int start_year,start_month,start_day,start_week;
16 int is_leap_year;
17 while(scanf(%d,&day),day!=-1)
18 {
19 start_year = 2000;
20 start_month = 1;
21 start_day = 1;
22 start_week = 6;
23
24
25 start_week = (start_week + day) % 7;
26
27 //断定是否闰年
28 if(start_year % 4 == 0 && !(start_year % 100 == 0 && start_year % 400 != 0))
29 {
30 is_leap_year = 1;
31 }
32 else
33 {
34 is_leap_year = 0;
35 }
36
37 while(day >= days_of_year[is_leap_year])
38 {
39 start_year ++;
40 day -= days_of_year[is_leap_year];
41
42 //断定是否闰年
43 if(start_year % 4 == 0 && !(start_year % 100 == 0 && start_year % 400 != 0))
44 {
45 is_leap_year = 1;
46 }
47 else
48 {
49 is_leap_year = 0;
50 }
51 }
52
53 while(day >= days_of_month[is_leap_year12 + start_month - 1])
54 {
55 day -= days_of_month[is_leap_year12 + start_month - 1];
56 start_month ++;
57 }
58
59 start_day += day;
60
61
62 printf(%d-%02d-%02d %s\n,start_year,start_month,start_day,days_of_week[start_week]);
63 }
64 return 0;
65 }
4.思路
(1)起首要知道闰年的相干常识
(2)模仿每年每月的策画过程
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》