生活随笔
收集整理的這篇文章主要介紹了
32:日历问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
32:日歷問題
總時間限制:?
1000ms內存限制:?
65536kB描述
在我們現在使用的日歷中, 閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。例如:1700, 1800, 1900 和 2100 不是閏年,而 1600, 2000 和 2400是閏年。 給定從公元2000年1月1日開始逝去的天數,你的任務是給出這一天是哪年哪月哪日星期幾。
輸入
輸入一行,每行包含一個正整數,表示從2000年1月1日開始逝去的天數。數據保證結果的年份不會超過9999。輸出
輸出一行,該行包含對應的日期和星期幾。格式為“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必須是下面中的一個: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 或 "Saturday“。樣例輸入
1 樣例輸出
2000-01-02 Sunday 來源
2080 1 #include<iostream>
2 using namespace std;
3 int bgyear,bgmonth,bgday;
4 int enyear,enmonth,enday;
5 int month[21]={0,31,28,31,30,31,30,31,31,30,31,30,31};//非閏年
6 int rmonth[21]={0,31,29,31,30,31,30,31,31,30,31,30,31};//閏年
7 int flag=1;
8 int tot=0;
9 int dow=6;
10 string week[8]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
11 int main()
12 {
13 int n;
14 cin>>n;
15 bgyear=2000;
16 bgmonth=1;
17 bgday=1;
18 for(int i=2000;i<=10000;i++)//尋找年數上的差異
19 {
20 if((i%4==0&&i%100!=0)||(i%400==0))
21 {
22 for(int j=1;j<=12;j++)
23 {
24 if(i==bgyear&&j<bgmonth)
25 continue;//尋找開始月份
26 for(int k=1;k<=rmonth[j];k++)
27 {
28 if(tot==n)
29 {
30 if(j<10&&k<10)
31 {
32 cout<<i<<"-"<<"0"<<j<<"-"<<"0"<<k<<" "<<week[dow-1];
33 return 0;
34 }
35 else if(j<10)
36 {
37 cout<<i<<"-"<<"0"<<j<<"-"<<k<<" "<<week[dow-1];
38 return 0;
39 }
40 else if(k<10)
41 {
42 cout<<i<<"-"<<j<<"-"<<"0"<<k<<" "<<week[dow-1];
43 return 0;
44 }
45 else
46 {
47 cout<<i<<"-"<<j<<"-"<<k<<" "<<week[dow-1];
48 return 0;
49 }
50 }//最后一天
51 tot++;
52 dow++;
53 if(dow==8)
54 dow=1;
55 }
56
57 }
58 }//閏年
59 else
60 {
61
62 for(int j=1;j<=12;j++)
63 {
64 for(int k=1;k<=month[j];k++)
65 {
66 if(tot==n)
67 {
68 if(j<10&&k<10)
69 {
70 cout<<i<<"-"<<"0"<<j<<"-"<<"0"<<k<<" "<<week[dow-1];
71 return 0;
72 }
73 else if(j<10)
74 {
75 cout<<i<<"-"<<"0"<<j<<"-"<<k<<" "<<week[dow-1];
76 return 0;
77 }
78 else if(k<10)
79 {
80 cout<<i<<"-"<<j<<"-"<<"0"<<k<<" "<<week[dow-1];
81 return 0;
82 }
83 else
84 {
85 cout<<i<<"-"<<j<<"-"<<k<<" "<<week[dow-1];
86 return 0;
87 }
88 }//最后一天
89 tot++;
90 dow++;
91 if(dow==8)
92 dow=1;
93 }
94 }
95 }//非閏年
96 }
97 return 0;
98 } ?
總結
以上是生活随笔為你收集整理的32:日历问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。